[swift] 상속과 다형성 이해하기

Swift는 객체지향 프로그래밍 언어로, 상속과 다형성을 지원하는 기능을 제공합니다. 이러한 기능들을 활용하여 코드를 재사용하고 유연한 프로그래밍을 할 수 있습니다. 이번 포스트에서는 Swift에서 상속과 다형성을 어떻게 활용하는지 살펴보겠습니다.

상속 (Inheritance)

상속은 현실세계의 객체 간의 관계를 모델링하는 데 사용되는 중요한 프로그래밍 개념입니다. 자식 클래스는 부모 클래스의 특성과 동작을 상속받아 사용할 수 있습니다.

class Vehicle {
    var currentSpeed = 0
    func makeNoise() {
        // 소음을 만드는 기본 동작
    }
}

class Bicycle: Vehicle {
    var hasBasket = false
}

위의 예제에서 Bicycle 클래스는 Vehicle 클래스를 상속받았습니다. 그 결과, Bicycle 클래스는 Vehicle 클래스의 속성과 동작을 사용할 수 있습니다.

다형성 (Polymorphism)

다형성은 객체지향 프로그래밍에서 여러 클래스가 동일한 인터페이스나 부모 클래스를 공유할 수 있는 개념을 말합니다. 이를 통해 여러 객체를 동일한 방식으로 다룰 수 있습니다.

class Vehicle {
    func makeNoise() {
        // 소음을 만드는 기본 동작
    }
}

class Bicycle: Vehicle {
    override func makeNoise() {
        print("따르릉!")
    }
}

class Car: Vehicle {
    override func makeNoise() {
        print("부르릉!")
    }
}

func letVehicleMakeNoise(vehicle: Vehicle) {
    vehicle.makeNoise()
}

letVehicleMakeNoise(vehicle: Bicycle()) // 출력: "따르릉!"
letVehicleMakeNoise(vehicle: Car()) // 출력: "부르릉!"

위의 예제에서는 Vehicle 클래스를 상속받은 Bicycle와 Car 클래스에서 makeNoise 메서드를 오버라이딩하여 각각의 소음을 출력하도록 구현하였습니다. 그 후 letVehicleMakeNoise 함수를 통해 각각의 객체를 동일한 방식으로 다룰 수 있음을 확인할 수 있습니다.

결론

Swift에서의 상속과 다형성은 객체지향 프로그래밍의 핵심 개념으로, 코드의 재사용성과 유연성을 높여줍니다. 이러한 개념을 올바르게 활용하여 프로그램을 작성하면 유지보수가 쉬우며 확장성이 뛰어난 코드를 작성할 수 있습니다.