[kotlin] 추상 클래스의 인스턴스 생성 가능 여부

하지만 추상 클래스에 정의된 추상 메서드를 구현하지 않은 경우에는 하위 클래스에서 인스턴스를 생성할 수 없습니다. 따라서 추상 클래스를 상속받은 하위 클래스에서는 모든 추상 메서드를 구현하고 나서야 인스턴스를 생성할 수 있습니다.

다음은 추상 클래스를 정의하고 하위 클래스에서 해당 추상 클래스의 인스턴스를 생성하는 예제입니다.

abstract class Shape {
    abstract fun calculateArea(): Double
}

class Circle(private val radius: Double) : Shape() {
    override fun calculateArea(): Double {
        return Math.PI * radius * radius
    }
}

fun main() {
    val circle = Circle(5.0)
    println("Circle area: ${circle.calculateArea()}")
}

위 예제에서 Shape는 추상 클래스로 정의되고, Circle 클래스에서 Shape를 상속받아 calculateArea 메서드를 구현한 후에 Circle 클래스의 인스턴스를 생성합니다.