메서드 (Method)
Written by Tejayon
메서드
- 메서드는 특정 타입에 관련된 함수를 뜻한다.
- 함수와 문법은 같고 메서드는 클래스, 구조체, 열거형에서 쓰인다.
- 인스턴스의 기능을 수행하는 인스턴스 메서드와 타입 자체의 기능을 수행하는 타입 메서드로 나눌 수 있다.
1. 인스턴스 메서드
-
특정 클래스, 구조체 , 열거형의 인스턴스에 속해 있는 함수이다.
-
인스턴스 메서드는 타입의 특정 인스턴스에서만 호출될 수 있다. 인스턴스 없이는 호출이 될 수 없다,
class Counter { var count = 0 func increment() { count += 1 } func increment(by amount: Int) { count += amount } func reset() { count = 0 } } let counter: Counter = Counter() counter.increment() counter.increment(by: 5) counter.reset()
위에 코드에서는 인스턴스 메서드가 총 3개이며 하나는 변수 count의 값을 1씩 올려주는 increment() 메서드, 변수에 파라미터로 받은 값을 더해주는 increment(by amount: Int) 메서드, 그리고 변수의 값을 0으로 초기화 하는 reset() 메서드가 있다. 인스턴스 메서드를 실행하기 위해서는 인스턴스를 만들어야 하고 만든 후에 인스턴스 뒤에 (.)을 찍은 뒤 메서드를 붙이면 실행이 된다.
2. self 프로퍼티
-
모든 인스턴스는 self 프로퍼티를 가지고 있다.
-
self 프로퍼티는 자기 자신을 가르키고 있는 프로퍼티이다.
-
이를 이용해서 인스턴스 메서드 안에서 자기 인스턴스에 접근할 수 있다.
func increment() { self.count += 1 }
위에 인스턴스에서는 굳이 self를 쓰지 않아도 되지만 이를 씀으로 인해서 인스턴스 내에 있는 count라는 변수에 값이 변하게 되는 것이다.
3. 타입 메서드
- 타입 메서드와 마찬가지로 타입 자체에서 호출이 가능한 메서드이다.
- 메서드 앞에 static 키워드를 사용하여 타입 메서드를 작성할 수 있다. 타입 프로퍼티와 마찬가지로 클래스에서는 class 키워드를 사용해 타입 메서드를 표현한다.
- 타입 메서드 안에서의 self는 인스턴스가 아닌 타입을 나타낸다.
- 타입 메서드를 호출 할 때에는 인스턴스 메서드처럼 (.)을 찍은 뒤에 메서드를 붙이는 것은 같지만 다른 점은 인스턴스 메서드는 점 앞에 인스턴스이름을 적지만 타입 메서드는 점 앞에는 타입을 적어서 호출을 하게 된다.