[kotlin] 추상 클래스를 이용한 다형성 구현
다형성(polymorphism)은 객체 지향 프로그래밍의 중요한 개념 중 하나로, 여러 클래스가 같은 이름의 메소드를 가지고 있지만 그 기능이 서로 다르게 동작할 수 있도록 하는 것을 의미합니다.
추상 클래스(abstract class)를 사용하여 다형성을 구현할 수 있습니다. 추상 클래스는 하나 이상의 추상 메소드를 가지고 있으며, 추상 메소드는 구체적인 내용이 없이 메소드명과 파라미터만을 정의합니다. 그리고 추상 클래스를 상속받는 실제 클래스에서 이 추상 메소드를 구현하면 됩니다.
다음은 Kotlin에서 추상 클래스와 다형성을 구현하는 간단한 예제입니다.
// 추상 클래스
abstract class Shape {
abstract fun calculateArea(): Double
}
// 실제 클래스들
class Circle(val radius: Double) : Shape() {
override fun calculateArea(): Double {
return Math.PI * radius * radius
}
}
class Rectangle(val width: Double, val height: Double) : Shape() {
override fun calculateArea(): Double {
return width * height
}
}
fun main() {
val shapes: Array<Shape> = arrayOf(Circle(3.0), Rectangle(2.0, 4.0))
for (shape in shapes) {
println("Area: ${shape.calculateArea()}")
}
}
위 예제는 Shape
추상 클래스를 정의하고, Circle
과 Rectangle
클래스가 이를 상속받아 calculateArea
메소드를 각각 구현하는 방식으로 다형성을 구현한 것입니다.
다형성을 이용하면 동일한 타입으로 여러 클래스 객체를 다룰 수 있어 코드의 유연성을 높일 수 있습니다.
따라서 다형성은 객체 지향 프로그래밍에서 중요한 원칙 중 하나로, 추상 클래스를 이용하여 구현할 수 있습니다.
추상 클래스와 다형성에 대한 더 자세한 내용은 Kotlin 공식 문서를 참고하시기 바랍니다.
Reference: Kotlin 공식 문서 - 추상 클래스 다형성 (wikipedia)