[kotlin] 코틀린 클래스에서 상속과 인터페이스를 함께 사용하는 방법

코틀린은 객체 지향 프로그래밍 언어로서, 클래스 상속과 인터페이스를 함께 사용할 수 있습니다. 이를 통해 다양한 기능을 조합하고 코드를 재사용할 수 있습니다.

클래스 상속하기

클래스 상속은 이미 정의된 클래스를 기반으로 새로운 클래스를 만드는 방법입니다. 하위 클래스(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