[swift] superclass와 subclass 간 메세지 전달

Superclass와 Subclass 간에 메세지를 전달하는 것은 객체 지향 프로그래밍에서 중요한 개념입니다. 이는 상속(inheritance) 을 통해 관련된 클래스들 간의 관계를 구성하고, 코드의 재사용성을 늘리며 유지보수를 간편하게 할 수 있는 장점이 있습니다.

Superclass의 메서드 호출

Subclass는 Superclass를 상속받기 때문에 Superclass의 메서드를 호출할 수 있습니다.

class Vehicle {
    func startEngine() {
        print("Engine started")
    }
}

class Car: Vehicle {
    func drive() {
        startEngine() // Superclass의 메서드 호출
        print("Car is being driven")
    }
}

let myCar = Car()
myCar.drive()

위 예제에서 Car 클래스는 Vehicle 클래스를 상속받았으며, startEngine() 메서드를 호출할 수 있습니다.

Superclass의 메서드 오버라이딩

Subclass는 Superclass의 메서드를 재정의(override)하여 자신에 맞게 구현할 수 있습니다.

class Vehicle {
    func startEngine() {
        print("Engine started")
    }
}

class Car: Vehicle {
    override func startEngine() {
        print("Car engine started")
    }
}

let myCar = Car()
myCar.startEngine()

위 예제에서 Car 클래스는 Vehicle 클래스의 startEngine() 메서드를 오버라이딩하여 새로운 동작을 정의합니다.

Superclass의 초기화 메서드 호출

Subclass는 Superclass의 초기화 메서드를 호출하여 Superclass의 속성을 초기화할 수 있습니다.

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

class Car: Vehicle {
    var numOfSeats: Int
    init(color: String, numOfSeats: Int) {
        self.numOfSeats = numOfSeats
        super.init(color: color) // Superclass의 초기화 메서드 호출
    }
}

let myCar = Car(color: "Red", numOfSeats: 4)

위 예제에서 Car 클래스는 Vehicle 클래스의 초기화 메서드를 super.init 키워드를 통해 호출하여 color 속성을 초기화합니다.

Superclass와 Subclass 간의 메시지 전달은 객체 지향 프로그래밍의 핵심적인 부분이며, 코드를 구조화하고 유연성을 높이는 데 도움이 됩니다.

Swift 공식 문서: 상속