코틀린은 객체 지향 프로그래밍 언어로서, 클래스 상속과 인터페이스를 함께 사용할 수 있습니다. 이를 통해 다양한 기능을 조합하고 코드를 재사용할 수 있습니다.
클래스 상속하기
클래스 상속은 이미 정의된 클래스를 기반으로 새로운 클래스를 만드는 방법입니다. 하위 클래스(subclass)는 상위 클래스(superclass)의 속성과 메서드를 상속받아 사용할 수 있습니다. 코틀린에서 클래스 상속은 : 뒤에 상위 클래스의 이름을 적는 것으로 이루어집니다.
open class Vehicle {
fun startEngine() {
println("Engine started")
}
}
class Car : Vehicle() {
fun drive() {
println("Driving the car")
}
}
위의 예제에서 Vehicle 클래스는 startEngine() 메서드를 가지고 있고, Car 클래스는 Vehicle 클래스를 상속받아 drive() 메서드를 추가로 정의하고 있습니다. 이렇게 상속을 통해 Car 클래스는 startEngine() 메서드를 호출할 수 있습니다.
인터페이스 구현하기
인터페이스는 클래스가 구현해야 하는 메서드의 목록을 정의하는 역할을 합니다. 코틀린에서 인터페이스는 interface 키워드를 사용하여 정의합니다. 클래스가 인터페이스를 구현하기 위해서는 : 뒤에 인터페이스의 이름을 적는 것으로 이루어집니다.
interface Flyable {
fun fly()
}
class Bird : Flyable {
override fun fly() {
println("Flying like a bird")
}
}
위의 예제에서 Flyable 인터페이스는 fly() 메서드를 정의하고 있습니다. Bird 클래스는 Flyable 인터페이스를 구현하여 fly() 메서드를 오버라이딩하여 사용하고 있습니다.
상속과 인터페이스 함께 사용하기
코틀린에서는 클래스가 상속과 인터페이스를 함께 사용할 수 있습니다. 상속을 받은 클래스가 인터페이스를 구현하는 형태로 코드를 작성할 수 있습니다.
open class Animal {
fun eat() {
println("Eating")
}
}
interface Swimmable {
fun swim()
}
class Dolphin : Animal(), Swimmable {
override fun swim() {
println("Swimming like a dolphin")
}
}
위의 예제에서 Dolphin 클래스는 Animal 클래스를 상속받고, Swimmable 인터페이스를 구현하고 있습니다. 따라서 Dolphin 클래스는 eat() 메서드와 swim() 메서드를 모두 사용할 수 있습니다.
결론
코틀린에서는 클래스 상속과 인터페이스를 함께 사용하여 다양한 기능을 추가하고 코드를 재사용할 수 있습니다. 클래스 상속은 : 뒤에 상위 클래스의 이름을 적는 것으로 이루어지고, 인터페이스 구현은 : 뒤에 인터페이스의 이름을 적는 것으로 이루어집니다. 클래스가 상속과 인터페이스를 함께 사용하는 경우에는 클래스 상속을 먼저 명시하고, 그 뒤에 쉼표로 구분하여 인터페이스를 명시합니다.
참고문서: Kotlin - Inheritance, Kotlin - Interfaces