개발 언어/코틀린
코틀린(Kotlin) | 클래스 - 추상 클래스, 인터페이스
jjiiiinn
2019. 6. 21. 22:22
728x90
코틀린(Kotlin) | 추상 클래스
- 추상 클래스는 하나 이상의 추상 메서드(구현체가 없는 메서드)를 가진다.
- 추상 클래스는 객체를 생성할 수 없다.
- 추상 클래스를 상속하여 모든 추상 메서드를 구현하여야만 객체를 생성 할 수 있다.
- 코틀린에서 추상 클래스란 abstract클래스 내부에 abstract멤버를 하나 이상 가진 클래스를 의미한다.
- open키워드를 따로 추가하지 않아도 된다.
abstract class Animal {
abstract fun bark()
fun eat() {
println("animal is eating")
}
}
class Dog : Animal() {
override fun bark() {
println("bow wow")
}
}
fun main() {
val animal = Dog()
animal.bark() // bow wow
animal.eat() // animal is eating
}
인터페이스
- Java8 인터페이스와 유사함.
- 추상 메서드 또는 구현이 있는 메서드(default method)를 가질 수 있다.
- 추상 프로퍼티(상태값) 또는 접근자를 가지는 프로퍼티를 가질 수 있다.
- 여러 interface를 상속시 메서드의 시그니쳐가 중복된다면 반드시 구현 클래스에서 오버라이드 해주어야한다. (관련 URL)
interface Animal {
// abstract property
val name: String
// accessor property
val eat: String
get() = "eating"
// abstract method
fun bark()
// default method
fun walk() {
println("${this.name} is walk")
}
}
class Dog(override val name: String) : Animal {
override fun bark() {
println("bow wow")
}
}
fun main() {
val dog: Animal = Dog("dog")
println("dog eat :: ${dog.eat}") // dog eat :: eating
dog.walk() // dog is walk
dog.bark() // bow wow
}
출처
https://altongmon.tistory.com/588
https://androidtest.tistory.com/106
https://brunch.co.kr/@mystoryg/15
728x90