본문 바로가기
Kotlin

Kotlin - 인터페이스

by 봄석 2019. 1. 3.

Kotlin - 인터페이스



인터페이스

인터페이스는 미구현 메소드를 포함하여 클래스에서 이를 구현합니다.

추상 클래스와 비슷하지만 클래스가 단일 상속만 되면 반면 인터페이스는 다중 구현이 가능합니다. 주로 클래스에 동일한 속성을 부여해 같은 메소드라도 다른 행동을 할 수 있게 하는데 사용합니다. 주로 클래스에 동일한 속성을 부여해 같은 메소드라도 다른 행동을 할 수 있게 하는데 사용합니다. 코틀린의 인터페이스는 자바와 거의 사용법이 같습니다


인터페이스의 선언

아래와 같이 인터페이스에 추상 메소드를 포함할 수 있습니다. 원래 추상 클래스에서 추상 메소드는 abstract 키워드가 필요한데 인터페이스에서는 생략할 수 있습니다.

interface Runnable{
    fun run()

}



인터페이스는 구현이 없는 메소드 뿐 아니라 구현된 메소드를 포함할 수 있습니다. 

이는 자바 8의 default 메소드에 대응합니다.

interface Runnable{
    fun run()
 
    fun fastRun() =println("빨리달린다")
}

Colored by Color Scripter

\


인터페이스의 구현

인터페이스를 구현할 때는 인터페이스 이름을 콜론( : ) 뒤에 나열합니다. 그리고 미구현 메소드를 작성하는데 이때 override 키워드를 앞에 추가합니다. run 함수를 오버라이드 한다고 말합니다

interface Runnable{
    fun run()
 
    fun fastRun() =println("빨리달린다")
}
 
class Human:Runnable{
    override fun run() {
        println("달린다")
    }
}




상속과 인터페이스를 함께 구현

다음과 같이 상속과 인터페이스를 함께 구현할 수 있습니다. 상속은 하나의 클래스만 상속하는 반면 인터페이스는 콤마로 구분하여 여러 인터페이스를 동시에 구현 할 수 있습니다.

open class Animal{}
 
interface Runnable{
    fun run()
 
    fun fastRun()=println("빨리달린다")
 
}
interface Eatable{
    fun eat()
}
 
class Dog:Animal(),Runnable,Eatable{
    override fun eat() {
        println("먹는다")
    }
 
    override fun run() {
        println("달린다")
    }
}
 
val dog=Dog()
dog.run()

dog.eat()



댓글