[kotlin] 추상 클래스 내부에서 상속한 클래스의 메서드 활용

추상 클래스를 활용하면 다형성(polymorphism)을 지원하는 클래스를 만들 수 있습니다. 추상 클래스는 하위 클래스에서 구현할 메서드를 정의해놓고, 하위 클래스에서 상속받은 해당 메서드를 구현함으로써 원하는 동작을 수행할 수 있도록 합니다.

추상 클래스와 하위 클래스 정의

// 추상 클래스
abstract class Shape {
    abstract fun draw()
}

// 하위 클래스
class Circle : Shape() {
    override fun draw() {
        println("원을 그립니다.")
    }
}

class Rectangle : Shape() {
    override fun draw() {
        println("사각형을 그립니다.")
    }
}

위의 예시에서는 Shape 클래스를 추상 클래스로 정의하고, CircleRectangle 클래스가 이를 상속받고 각각 draw 메서드를 구현하고 있습니다.

추상 클래스 내부에서 하위 클래스의 메서드 활용

추상 클래스 내부에서 상속한 하위 클래스의 메서드를 활용하려면, 다형성을 이용하여 메서드를 호출하면 됩니다.

fun main() {
    val circle: Shape = Circle()
    val rectangle: Shape = Rectangle()

    drawShape(circle)
    drawShape(rectangle)
}

fun drawShape(shape: Shape) {
    shape.draw()
}

위의 예시에서 main 함수에서 CircleRectangle 객체를 생성하고, drawShape 함수를 호출합니다. 이때 Shape 타입의 매개변수를 이용하여 draw 메서드를 호출하면, 각 클래스에서 정의한 메서드가 실행되어 “원을 그립니다.”와 “사각형을 그립니다.”가 출력됩니다.

위의 방법을 통해 추상 클래스 내에서 상속한 클래스의 메서드를 활용할 수 있습니다. 추상 클래스를 사용하여 프로그램의 유연성과 확장성을 높이는데 활용할 수 있는 것입니다.

참고 자료: Kotlin Documentation