[swift] Swift에서의 상속과 초기화 메서드

Swift는 다른 객체지향 프로그래밍 언어와 마찬가지로 클래스의 상속을 지원합니다. 상속은 기존 클래스의 기능을 사용하면서 새로운 클래스를 정의하는 데 사용될 수 있습니다. 이때 초기화 메서드는 상속된 속성을 초기화하는 중요한 역할을 수행합니다.

상속(Inheritance)

Swift에서 상속을 위해서는 기존 클래스에 class 키워드를 사용하고, 새로운 클래스를 정의할 때 : 기호를 사용하여 상속할 클래스를 명시해야 합니다. 상속받은 클래스는 기존 클래스의 속성과 메서드를 상속받게 되며, 이를 통해 기존 클래스의 기능을 확장하거나 수정할 수 있습니다. 상속을 통해 코드의 재사용성과 유지보수성을 향상시킬 수 있습니다.

다음은 Vehicle 클래스를 상속하는 Car 클래스를 정의하는 예시입니다.

class Vehicle {
    var color: String
    
    init(color: String) {
        self.color = color
    }
    
    func move() {
        print("Moving...")
    }
}

class Car: Vehicle {
    var brand: String
    
    init(color: String, brand: String) {
        self.brand = brand
        super.init(color: color)
    }
    
    override func move() {
        print("Driving...")
    }
}

Vehicle 클래스는 color 속성과 move() 메서드를 가지고 있습니다. Car 클래스는 Vehicle 클래스를 상속받아 brand 속성을 추가하고, move() 메서드를 오버라이딩하여 재정의하였습니다.

초기화 메서드(Initializer)

클래스의 인스턴스를 생성할 때 사용되는 초기화 메서드는 해당 클래스의 속성을 초기화하는 역할을 담당합니다. 이때 상속된 클래스의 속성도 초기화되어야 올바르게 동작합니다. 초기화 메서드는 init 키워드로 정의되며, 필요한 파라미터와 초기화 로직을 포함합니다.

위의 예시에서 Car 클래스의 초기화 메서드를 살펴보면 다음과 같습니다.

init(color: String, brand: String) {
    self.brand = brand
    super.init(color: color)
}

Car 클래스의 초기화 메서드는 colorbrand라는 두 개의 파라미터를 받고, brand 속성을 초기화한 후 super.init(color: color)를 사용하여 Vehicle 클래스의 초기화 메서드를 호출합니다. 이렇게 상속된 클래스의 초기화 메서드를 호출하면 부모 클래스의 속성도 올바르게 초기화됩니다.

참고 자료