코틀린 인터페이스
인터페이스는 미구현 메서드를 포함하여 클래스에서 이를 구현합니다.
추상 클래스와 비슷하지만 클래스가 단일 상속만 되는 반면 인터페이스는 다중 구현이 가능합니다.
주로 클래스에 동일한 속성을 부여해 같은 메서드라도 다른 행동을 할 수 있게 하는 데 사용합니다.
인터페이스의 선언.
다음과 같이 인터페이스에 추상 메서드를 포함할 수 있습니다.
원래 추상 클래스에서 추상 메서드는 abstract 키워드가 필요한데 인터페이스에서는 생략할 수 있습니다.
interface Runnable {
fun run()
}
인터페이스는 구현이 없는 메서드뿐만 아니라 구현된 메서드를 포함할 수 있습니다.
interface Runnable {
fun run()
fun fastRun() = println(“빨리 달린다”)
}
인터페이스의 구현.
인터페이스를 구현할 때는 인터페이스 이름을 콜론: 뒤에 나열합니다.
그리고 미구현 메서드를 작성하는데 이때 override 키워드를 메서드 앞에 추가합니다.
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()
'Android' 카테고리의 다른 글
코틀린 activity_main.xml 에서 디자인 위젯 ID(Button, TextView 등) MainActivity.kt 에서 인식 안될때 처리 방법. (0) | 2021.05.24 |
---|---|
코틀린 SharedPreference로 데이터 저장, 불러 오기. (0) | 2019.07.06 |
코틀린 추상 클래스 (0) | 2019.07.03 |
Realm 데이터 베이스 사용 준비 (0) | 2019.02.15 |
벡터 드로어블 하위 호환 설정 (0) | 2019.02.14 |