Swift 입문 | 클래스 기본 | 이니셜라이저

여기까지 인스턴스 생성은 모든 Helo();와 같이 인수없이 만들었다. 이 인스턴스를 만들 때 필요한 값 등을 인수로 전달할 수 있다면 매우 편리할 것이다.

이런 때에 이용되는 것이 “이니셜라이저(initialize)“이다. 이것은 인스턴스를 만들 때 자동으로 호출되는 초기화 처리 전용의 메소드이다. 이 이니셜라이저는 다음과 같이 정의한다.

init (인수) {
    ...... 초기화 처리 ......
}

func init로 쓸 필요는 없다. 단, init만 작성하면 된다. 이니셜라이저는 특별한 방법이므로 func 정의할 필요가 없는 거다.

이 init의 ()에 인수를 선언하면 인스턴스 생성시에 값을 전달할 수 있게된다. 아래에 간단한 예제를 보도록 하자.

import Cocoa

class Helo {
    var name:String;
    
    init(name:String){
        self.name = name;
    }
    
    func say(){
        print("Hello, " + name + "!");
    }
}

var obj:Helo = Helo(name:"Taro");
obj.say();

여기에서는 Helo 클래스에서 init(#name:String) 형태로 이니셜라이저가 작성되어 있다. 이렇게 하면 인스턴스 생성시에는 Helo(name:“Taro”);와 같이 인수를 지정하여 쓰면 된다.

또한, 이 이니셜라이저에서 인수로 전달된 변수 name을 Helo 클래스의 name 속성에 할당하기 위해, “self.name"라고 작성을 하고 있다. 이 “self"는 인스턴스 자신을 나타내는 특별한 값이다. 이와 같이 작성하는 것으로, “이 인스턴스 자신의 name 속성"을 지정하고 있다. 클래스 정의에서 자주 사용하는 것이므로 모두 기억하도록 하자.