[코틀린기초] 22. 상속과 클래스 계층
상속
자식 클래스를 만들 때 상위 클래스의 속성과 기능을 물려 받는 것
## open
코틀린의 모든 클래스는 묵시적으로 Any로부터 상속된다.
상속 가능한 클래스는 open 키워드로 선언하며, 상속은 : 기호로 명시한다.
주 생성자와 달리 부 생성자에서는 프로퍼티 선언이 불가능하다.
또한 서브 클래스의 생성자로 부모 클래스의 생성자를 호출하여 프로퍼티를 초기화하도록 한다.
open class 기반 클래스명{
...
}
//상속할 때에는 기반 클래스의 생성자를 사용해야함
//open이 없기 때문에 이런 클래스를 최종 클래스라고 한다. 더는 상속될 수 없는 클래스!
class 파생 클래스명 : 기반 클래스 명(){
}
## 예제 코드
open class Bird(var name: String, var wing: Int, var beak: String){
fun fly(){
println("Fly")
}
}
class Lark(name: String, wing: Int, beak: String) : Bird(name, wing, beak){ //자식 생성자로 프로퍼티 초기화
fun singHitone(){
println("sing Hitone")
}
}
class Parrot : Bird{
var language : String
constructor(name: String, wing: Int, beak: String, language: String) : super(name, wing, beak){ // 부생성자에서는 프로퍼티 선언 불가!
this.language = language
}
fun speak(){
println("Speak $language")
}
}