[kotlin] 추상 메서드를 가지는 일반 클래스와의 비교

Kotlin은 객체 지향 프로그래밍 언어이며, 추상 클래스와 인터페이스는 둘 다 다형성을 구현하는 데 사용됩니다. 그러나 추상 클래스와 인터페이스 간에는 몇 가지 중요한 차이점이 있습니다.

추상 클래스 (Abstract Class)

추상 클래스는 일반 클래스와 유사하지만, 추상 메서드를 포함할 수 있습니다. 추상 메서드는 구현을 가지지 않는 메서드이며, 해당 메서드는 하위 클래스에서 구현되어야 합니다.

abstract class Shape {
    abstract fun draw() // 추상 메서드
    fun fill() {
        // 구현
    }
}

추상 클래스는 인스턴스화될 수 없습니다. 대신 하위 클래스를 작성하고, 추상 메서드를 구현하여야 합니다.

인터페이스 (Interface)

인터페이스는 추상 메서드 외에도 상태를 저장할 수 없는 메서드, 속성, 및 기타 멤버를 정의할 수 있습니다.

interface Drawable {
    fun draw() // 추상 메서드
    fun fill() {
        // 디폴트 구현
    }
}

클래스는 여러 인터페이스를 구현할 수 있지만, 한 개의 클래스만 상속 받을 수 있습니다.

결론

추상 클래스는 더 많은 유연성을 제공하지만, 단일 상속을 강제합니다. 인터페이스는 다중 상속을 지원하지만, 상태를 저장할 수 없는 멤버만을 포함합니다. 이러한 차이점을 고려하여, 상황에 맞게 추상 클래스 또는 인터페이스를 선택해야 합니다.