[kotlin] 코틀린에서 상속과 인터페이스의 차이점
코틀린은 Java와 비슷한 문법을 가진 프로그래밍 언어입니다. 하지만 코틀린은 몇 가지 차이점을 갖고 있으며, 상속과 인터페이스의 개념도 이를 반영하고 있습니다.
상속 (Inheritance)
상속은 클래스로부터 다른 클래스를 파생하는 개념입니다. 상속을 통해 기존 클래스의 속성과 동작을 다른 클래스에서 재사용할 수 있습니다.
코틀린에서 상속을 하려면 :
기호를 사용하여 기존 클래스를 선언하고, 파생 클래스를 만들 때에는 이 기호 뒤에 파생 클래스를 선언합니다. 파생 클래스는 하나의 부모 클래스만 상속받을 수 있습니다.
open class Parent {
open fun someFunction() {
print("Parent implementation")
}
}
class Child : Parent() {
override fun someFunction() {
print("Child implementation")
}
}
인터페이스 (Interfaces)
인터페이스는 클래스가 구현해야 하는 메서드들의 집합입니다. 인터페이스는 클래스에 구현되어야 하는 동작을 정의하는 역할을 합니다.
코틀린에서 인터페이스를 선언하기 위해서는 interface
키워드를 사용합니다. 클래스는 인터페이스를 구현하기 위해 : 인터페이스명
을 통해 선언합니다. 클래스는 여러 개의 인터페이스를 구현할 수 있습니다.
// 인터페이스 선언
interface Printable {
fun print()
}
interface Displayable {
fun display()
}
// 클래스가 인터페이스를 구현
class MyClass : Printable, Displayable {
override fun print() {
println("Printing...")
}
override fun display() {
println("Displaying...")
}
}
차이점
상속과 인터페이스는 모두 클래스의 구조를 확장하는 개념이지만, 목적과 사용 방법에 차이가 있습니다.
- 목적:
- 상속: 기존 클래스를 확장하여 새로운 기능을 추가하거나 기능을 재정의합니다.
- 인터페이스: 클래스가 반드시 구현해야 하는 동작을 정의합니다. 다중 상속을 지원하는 인터페이스를 사용하여 클래스가 여러 개의 인터페이스를 동시에 구현할 수 있습니다.
- 구현 방식:
- 상속:
open class
키워드로 상속 가능한 클래스를 선언하고,override
키워드로 메서드를 재정의합니다. - 인터페이스:
interface
키워드로 인터페이스를 선언하고, 클래스에서: 인터페이스명
을 사용하여 인터페이스를 구현합니다.
- 상속:
- 상속 제약:
- 상속: 클래스는 하나의 부모 클래스만 상속할 수 있습니다.
- 인터페이스: 클래스는 여러 개의 인터페이스를 구현할 수 있습니다.
따라서, 상속은 기존 클래스를 수정하고 확장하는 데 사용하며, 인터페이스는 클래스의 동작을 정의하는 데 사용됩니다. 이러한 차이점을 고려하여 상황에 맞게 상속과 인터페이스를 선택해야 합니다.
참고: