[swift] 초기화 상속과 재정의

스위프트에서 클래스는 초기화 과정을 통해 객체의 속성을 설정할 수 있습니다. 초기화는 클래스의 인스턴스가 생성될 때 호출되는 특별한 메서드입니다.

클래스의 상속을 통해 하위 클래스는 상위 클래스의 속성과 메서드를 상속받을 수 있습니다. 하지만 초기화 메서드는 상속되지 않습니다. 따라서, 하위 클래스에서는 초기화를 재정의해야합니다.

초기화 상속

스위프트에서는 하위 클래스가 상위 클래스의 지정 이니셜라이저를 상속받을 수 있습니다. 이를 통해 하위 클래스에서는 상위 클래스의 속성을 초기화할 수 있습니다.

다음은 상위 클래스인 Vehicle을 정의한 예입니다.

class Vehicle {
    var brand: String
    
    init(brand: String) {
        self.brand = brand
    }
}

하위 클래스 Car는 상위 클래스 Vehicle의 지정 이니셜라이저를 상속받고, 속성을 초기화할 수 있습니다.

class Car: Vehicle {
    var color: String
    
    init(brand: String, color: String) {
        self.color = color
        super.init(brand: brand)
    }
}

초기화 재정의

하지만 초기화 메서드는 상위 클래스에서 자동으로 상속되지 않기 때문에 하위 클래스에서 초기화를 재정의해야합니다. 하위 클래스에서 초기화 메서드를 재정의할 때는 override 키워드를 사용해야합니다.

다음은 초기화 메서드를 재정의하는 예입니다.

class Car: Vehicle {
    var color: String
    
    override init(brand: String) {
        self.color = "Black"
        super.init(brand: brand)
    }
}

위의 예제에서 하위 클래스 Car는 초기화 메서드를 재정의하여 color 속성을 “Black”으로 초기화합니다.

결론

스위프트에서 클래스 상속과 초기화 메서드 상속 및 재정의는 객체 지향 프로그래밍의 핵심 개념입니다. 초기화 메서드를 제대로 상속하고 재정의함으로써 코드의 재사용성과 유지보수성을 향상시킬 수 있습니다.

참고 자료