[swift] 다형성을 통해 여러 타입의 인스턴스를 동시에 다루는 방법
다형성은 객체지향 프로그래밍에서 중요한 개념으로, 여러 타입의 객체를 하나의 인터페이스로 다룰 수 있는 능력을 의미합니다. 스위프트에서는 프로토콜을 사용하여 다형성을 구현할 수 있습니다. 이를 통해 다양한 타입의 객체를 동시에 다루고, 인터페이스를 통일하여 코드의 유연성과 재사용성을 높일 수 있습니다.
프로토콜을 활용한 다형성
프로토콜은 메서드, 프로퍼티, 이니셜라이저 등의 요구사항을 정의할 수 있는데, 이를 통해 다양한 타입의 객체가 동일한 형식을 가지도록 할 수 있습니다. 예를 들어, 다음과 같이 Shape
프로토콜을 정의할 수 있습니다.
protocol Shape {
func area() -> Double
}
이제 Shape
프로토콜을 채택하는 여러 타입의 객체를 만들어 다형성을 구현할 수 있습니다.
다형성의 활용
class Circle: Shape {
let radius: Double
init(radius: Double) {
self.radius = radius
}
func area() -> Double {
return Double.pi * radius * radius
}
}
class Rectangle: Shape {
let width: Double
let height: Double
init(width: Double, height: Double) {
self.width = width
self.height = height
}
func area() -> Double {
return width * height
}
}
위와 같이 Circle
과 Rectangle
클래스가 Shape
프로토콜을 채택하고, 각자의 형태에 맞게 area()
메서드를 구현했습니다.
다형성을 활용한 코드
let shapes: [Shape] = [Circle(radius: 5.0), Rectangle(width: 3.0, height: 4.0)]
for shape in shapes {
print(shape.area())
}
위와 같이 Circle
과 Rectangle
인스턴스를 모두 Shape
타입으로 다룰 수 있습니다. area()
메서드는 각 객체의 실제 타입에 따라 적절한 방식으로 호출되어 다형성이 구현됩니다.
다형성을 통해 여러 타입의 객체를 효과적으로 다룰 수 있으며, 프로토콜을 활용하여 인터페이스를 통일하고 유연하고 재사용 가능한 코드를 작성할 수 있습니다.