[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 추상 클래스를 정의하고, CircleRectangle 클래스가 이를 상속받아 calculateArea 메소드를 각각 구현하는 방식으로 다형성을 구현한 것입니다.

다형성을 이용하면 동일한 타입으로 여러 클래스 객체를 다룰 수 있어 코드의 유연성을 높일 수 있습니다.

따라서 다형성은 객체 지향 프로그래밍에서 중요한 원칙 중 하나로, 추상 클래스를 이용하여 구현할 수 있습니다.

추상 클래스와 다형성에 대한 더 자세한 내용은 Kotlin 공식 문서를 참고하시기 바랍니다.

Reference: Kotlin 공식 문서 - 추상 클래스 다형성 (wikipedia)