[kotlin] 추상 클래스와 인터페이스의 차이점
코틀린에서 추상 클래스와 인터페이스는 모두 다형성을 구현하는 방법으로 사용됩니다. 둘 다 공통된 동작을 정의하고 연관된 클래스 간의 상호 작용을 향상시키는 기능을 제공합니다. 그러나 두 가지 접근 방식에는 몇 가지 중요한 차이점이 있습니다.
추상 클래스
- 추상 클래스는
abstract
키워드를 사용하여 정의됩니다. - 추상 클래스는 일반 속성과 메서드를 가질 수 있습니다.
- 추상 클래스는 생성자를 가질 수 있습니다.
- 하나의 추상 클래스만 상속될 수 있습니다.
abstract class Shape {
val color: String = "Red"
abstract fun draw()
}
인터페이스
- 인터페이스는
interface
키워드를 사용하여 정의됩니다. - 인터페이스는 추상 메서드와 일반 메서드를 가질 수 있지만, 메서드의 내용을 포함할 수 없습니다.
- 인터페이스는 구현을 가질 수 없으며 생성자를 가질 수 없습니다.
- 여러 개의 인터페이스를 상속받을 수 있습니다.
interface Drawable {
fun draw()
fun erase() {
println("Erasing...")
}
}
결론
추상 클래스는 is-a 관계를 나타내는 데 사용되며, 구현을 포함할 수 있습니다. 반면, 인터페이스는 can-do 관계를 나타내는 데 사용되며, 다중 상속에 유리합니다.
더 자세한 내용은 공식 Kotlin 문서를 참조하십시오.