abstract
Java와 다르게extends 키워드는 : 로 바뀌었다! (앞 뒤 띄어쓰기 필수!)
java에서는 @Override 어노테이션을 썼는데, kotlin에서는 override 키워드를 쓴다.
class Cat(
species: String
) : Animal(species, 4) {
override fun move() { .. } // override 키워드붙은 함수는 재정의하는 함수를 뜻함
}
상위 추상 클래스 Animal의 프로퍼티를 하위 클래스 Penguin에서 사용하는 예제
class Penguin(
species: String
) : Animal(species, 2) {
private val wingCount = 2
override fun move() {
println("펭귄이 움직입니다~ 꿱꿱")
}
override val legCount: Int
get() = super.legCount + this.wingCount
}
abstract class Animal(
protected val species: String,
protected open val legCount: Int // open 키워드를 붙이지 않으면 상속한 클래스에서 접근X
) {
abstract fun move()
}
프로퍼티에 대한 override를 할때는 추상 프로퍼티가 아니면 꼭 open 키워드를 붙여야한다.
상위 클래스에 접근하는 키워드는 super로 동일하다.
Java와 동일하게추상 클래스는 인터페이스화 할 수 없다.