Kotlin - 인터페이스
인터페이스
인터페이스는 미구현 메소드를 포함하여 클래스에서 이를 구현합니다.
추상 클래스와 비슷하지만 클래스가 단일 상속만 되면 반면 인터페이스는 다중 구현이 가능합니다. 주로 클래스에 동일한 속성을 부여해 같은 메소드라도 다른 행동을 할 수 있게 하는데 사용합니다. 주로 클래스에 동일한 속성을 부여해 같은 메소드라도 다른 행동을 할 수 있게 하는데 사용합니다. 코틀린의 인터페이스는 자바와 거의 사용법이 같습니다
인터페이스의 선언
아래와 같이 인터페이스에 추상 메소드를 포함할 수 있습니다. 원래 추상 클래스에서 추상 메소드는 abstract 키워드가 필요한데 인터페이스에서는 생략할 수 있습니다.
interface Runnable{
fun run()
}
인터페이스는 구현이 없는 메소드 뿐 아니라 구현된 메소드를 포함할 수 있습니다.
이는 자바 8의 default 메소드에 대응합니다.
interface Runnable{
fun run()
fun fastRun() =println("빨리달린다")
}
\
인터페이스의 구현
인터페이스를 구현할 때는 인터페이스 이름을 콜론( : ) 뒤에 나열합니다. 그리고 미구현 메소드를 작성하는데 이때 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()
'Kotlin' 카테고리의 다른 글
Kotlin - null값아님보증(!!), 안전한호출(?.), 엘비스 연산자(?:) (0) | 2019.01.03 |
---|---|
Kotlin - null 가능성, lateinit ,lazy (0) | 2019.01.03 |
Kotlin - 클래스의 상속, 내부 클래스, 추상 클래스 (0) | 2019.01.03 |
Kotlin - 프로퍼티, 접근제한자 (0) | 2019.01.03 |
Kotlin - 클래스 (0) | 2019.01.03 |
댓글