클래스의 상속이 이뤄지는 경우
수퍼클래스 서브클래스
open: 클래스가 상속될 수 있도록 클래스 선언시 붙여줄 수 있는 키워드
수퍼클래스에 존재하는 속성과 같은 이름의 속성을 가질 수 없다.
서브클래스가 생성될 때는 반드시 수퍼클래스의 생성자까지 호출되어야 한다.
fun main() {
var a = Animal("별이", 5, "개")
var b = Dog("별이", 5)
a.introduce()
b.introduce()
b.bark()
var c = Cat("루이", 1)
c.introduce()
c.meow()
}
open class Animal(var name:String, var age:Int, var type:String) {
fun introduce() {
println("저는 ${type}이고 ${name}이고 ${age}살 입니다.")
}
}
class Dog (name:String, age:Int) : Animal (name, age, "개") {
fun bark() {
println("멍멍")
}
}
class Cat (name:String, age: Int) : Animal (name, age, "고양이") {
fun meow() {
println("야옹")
}
}
저는 개이고 별이이고 5살 입니다.
저는 개이고 별이이고 5살 입니다.
멍멍
저는 고양이이고 루이이고 1살 입니다.
야옹