
134 第
5
章
open classes
Animal
image
food
habitat
hunger
makeNoise()
eat()
roam()
sleep()
open class Animal {
open val image = ""
open val food = ""
open val habitat = ""
var hunger = 10
open fun makeNoise() {
println("The Animal is making a noise")
}
open fun eat() {
println("The Animal is eating")
}
open fun roam() {
println("The Animal is roaming")
}
fun sleep() {
println("The Animal is sleeping")
}
}
src
Animals.kt
Animals
使用
open
关键字声明父类及它的属
性和方法
将一个类用作父类之前,必须显式地告诉编译器这是被允许的。你
可以通过给类名(及任何想要覆盖的属性和方法名)添加关键字
open作为前缀来达到此目的。这告诉编译器你设计的类将作为父类,
你定义的属性和方法将可以被覆盖。
在Animal类层次结构中,我们希望能够将Animal作为父类,并覆
盖它的大部分属性和方法。如下代码允许我们这样做——请更新你
的Animal.kt版本(更改的代码以粗体显示):
我们已经将Animal类,以及所有需要在子类中覆盖的属性和方法声 ...