[kotlin] 추상 메서드를 가지는 일반 클래스와의 비교
Kotlin은 객체 지향 프로그래밍 언어이며, 추상 클래스와 인터페이스는 둘 다 다형성을 구현하는 데 사용됩니다. 그러나 추상 클래스와 인터페이스 간에는 몇 가지 중요한 차이점이 있습니다.
추상 클래스 (Abstract Class)
추상 클래스는 일반 클래스와 유사하지만, 추상 메서드를 포함할 수 있습니다. 추상 메서드는 구현을 가지지 않는 메서드이며, 해당 메서드는 하위 클래스에서 구현되어야 합니다.
abstract class Shape {
abstract fun draw() // 추상 메서드
fun fill() {
// 구현
}
}
추상 클래스는 인스턴스화될 수 없습니다. 대신 하위 클래스를 작성하고, 추상 메서드를 구현하여야 합니다.
인터페이스 (Interface)
인터페이스는 추상 메서드 외에도 상태를 저장할 수 없는 메서드, 속성, 및 기타 멤버를 정의할 수 있습니다.
interface Drawable {
fun draw() // 추상 메서드
fun fill() {
// 디폴트 구현
}
}
클래스는 여러 인터페이스를 구현할 수 있지만, 한 개의 클래스만 상속 받을 수 있습니다.
결론
추상 클래스는 더 많은 유연성을 제공하지만, 단일 상속을 강제합니다. 인터페이스는 다중 상속을 지원하지만, 상태를 저장할 수 없는 멤버만을 포함합니다. 이러한 차이점을 고려하여, 상황에 맞게 추상 클래스 또는 인터페이스를 선택해야 합니다.