메서드 (Method)

Written by Tejay
on 

메서드

  • 메서드는 특정 타입에 관련된 함수를 뜻한다.
  • 함수와 문법은 같고 메서드는 클래스, 구조체, 열거형에서 쓰인다.
  • 인스턴스의 기능을 수행하는 인스턴스 메서드와 타입 자체의 기능을 수행하는 타입 메서드로 나눌 수 있다.

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는 인스턴스가 아닌 타입을 나타낸다.
  • 타입 메서드를 호출 할 때에는 인스턴스 메서드처럼 (.)을 찍은 뒤에 메서드를 붙이는 것은 같지만 다른 점은 인스턴스 메서드는 점 앞에 인스턴스이름을 적지만 타입 메서드는 점 앞에는 타입을 적어서 호출을 하게 된다.