[kotlin] 코틀린 sealed 클래스의 하위 클래스 확장 방법

코틀린에서는 sealed 클래스를 사용하여 계층 구조를 만들 수 있습니다. sealed 클래스는 특정 클래스와 그 클래스의 하위 클래스들을 한정하는 역할을 합니다.

하위 클래스들에 대해 어떤 동작을 추가하려면, 각 하위 클래스를 확장해야 합니다. 이때 패턴 매칭을 사용하여 각 하위 클래스의 동작을 정의하는 것이 좋은 방법입니다.

아래는 예시 코드입니다.

sealed class Shape {
    class Circle(val radius: Int) : Shape()
    class Square(val sideLength: Int) : Shape()
}

fun calculateArea(shape: Shape): Double {
    return when (shape) {
        is Shape.Circle -> 3.14 * shape.radius * shape.radius
        is Shape.Square -> (shape.sideLength * shape.sideLength).toDouble()
    }
}

위 코드에서는 Shape 클래스를 sealed 클래스로 선언하고, CircleSquare 두 하위 클래스를 선언했습니다. 그리고 calculateArea 함수에서 각 하위 클래스의 동작을 정의하였습니다.

이처럼 sealed 클래스와 패턴 매칭을 활용하여 계층 구조를 쉽게 다룰 수 있습니다.

더 자세한 내용은 코틀린 공식 문서를 참고해주세요.