[kotlin] 코틀린 클래스에서 상속을 받아 메서드 오버라이딩하기

코틀린은 객체 지향 프로그래밍 언어로서, 클래스를 사용하여 객체를 만들고 관리할 수 있습니다. 클래스는 다른 클래스를 상속받을 수 있어서 부모 클래스의 속성과 메서드를 상속받아 사용할 수도 있습니다. 이때, 자식 클래스에서 부모 클래스의 메서드를 재정의하는 것을 “메서드 오버라이딩”이라고 합니다.

메서드 오버라이딩은 부모 클래스에서 정의한 메서드를 자식 클래스에서 다시 정의하여 동작을 변경하거나 추가 기능을 구현할 수 있도록 합니다. 이를 통해 다형성을 이용하여 다양한 객체를 처리할 수 있습니다.

open class Shape {
    open fun draw() {
        println("도형을 그립니다.")
    }
}

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

class Circle: Shape() {
    override fun draw() {
        println("원을 그립니다.")
    }
}

fun main() {
    val shape1 = Rectangle()
    val shape2 = Circle()
    
    shape1.draw()
    shape2.draw()
}

위 예시에서 Shape 클래스는 draw()라는 메서드를 가지고 있습니다. 이 메서드는 “도형을 그립니다.”라는 메시지를 출력하도록 정의되어 있습니다.

RectangleCircle 클래스는 Shape 클래스를 상속받고 있으며, 각각 draw() 메서드를 오버라이딩하여 “사각형을 그립니다.”와 “원을 그립니다.”라는 메시지를 출력하도록 재정의합니다.

main() 함수에서 RectangleCircle 클래스의 인스턴스를 생성하고, draw() 메서드를 호출하면 각각 재정의된 메서드의 동작이 출력됩니다.

이처럼 코틀린에서는 상속과 메서드 오버라이딩을 이용하여 클래스 간에 유연한 관계를 구성할 수 있습니다.

참고: 코틀린 공식 문서 - 클래스와 상속