-
继承自父类的属性:子类构造参数中无需加 val/var,仅作为 “父类构造参数的传递者”,子类直接复用父类的属性;
-
子类自己新增的属性:构造参数中必须加 val/var,明确属性的可变性(读写 / 只读),是子类独有的特征,即
color是子类自己的属性,需要修饰符; -
继承父类时,必须在
:后传递父类构造所需的参数,完成父类初始化,即name,age前面不需要任何的修饰符。
// 父类:name , age
class Animal(val name: String, var age: Int) {
println(s"父类构造器 ..... ${name} ${age}")
def eat(): Unit = {
println(s"${name} ${age} eating....")
}
}
// 子类 :name,age , color
class Dog(name: String, age: Int, var color: String) extends Animal(name, age) {
println(s"子类构造器 ..... ${name} ${age} ${color}")
}
def main(args: Array[String]): Unit = {
val dog1 = new Dog("旺财", 1, "黑色")
dog1.eat()
}