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