[swift] 상위 클래스가 초기화 메서드를 가진 경우

Swift는 객체 지향 프로그래밍 언어이며, 클래스 간의 계층구조를 지원합니다. 상위 클래스가 초기화 메서드를 가지고 있는 경우, 이를 자식 클래스에서 어떻게 처리해야 하는지 알아보겠습니다.

초기화 메서드란?

객체를 생성하고 초기화하는 역할을 하는 메서드를 초기화 메서드라고 합니다. Swift에서는 init 키워드를 사용하여 초기화 메서드를 정의합니다.

상위 클래스의 초기화 메서드

상위 클래스가 초기화 메서드를 가지고 있는 경우, 자식 클래스에서는 상위 클래스의 초기화 메서드를 호출해야 합니다. 이를 위해 super.init() 문장을 사용합니다.

class Parent {
    var name: String

    init(name: String) {
        self.name = name
    }
}

class Child: Parent {
    var age: Int

    init(name: String, age: Int) {
        self.age = age
        super.init(name: name)
    }
}

위의 예제에서 Parent 클래스는 name 속성과 초기화 메서드를 가지고 있습니다. Child 클래스는 Parent 클래스를 상속받으며, 자신만의 age 속성과 초기화 메서드를 추가로 가지고 있습니다.

Child 클래스의 초기화 메서드(init(name: String, age: Int))에서는 먼저 Child 클래스의 속성인 age를 초기화한 후, super.init(name: name) 문장을 통해 상위 클래스인 Parent 클래스의 초기화 메서드를 호출하고 있습니다. 이를 통해 name 속성도 초기화되게 됩니다.

정리

이처럼 상위 클래스가 초기화 메서드를 가진 경우, 자식 클래스에서는 super.init() 문장을 사용하여 상위 클래스의 초기화 메서드를 호출해야 합니다. 이를 통해 모든 속성을 올바르게 초기화할 수 있습니다.

자세한 내용은 Apple 공식 문서를 참고하시기 바랍니다.