带参构造器的写法:
如果父类和子类都有自己的带参构造器,问题就比较复杂一些,我们在写子类的时候就要传入父类的构造器参数。
要点如下:
-
1. 父类构造器正常写。
-
2. 在写子类构造器时:
(1)如果某个属性可以从父类中继承过来,那么这些属性就不要添加任何的修饰符(val,var都不加)如果这属性是子类自己特有的,就需要补充修饰符;
(2)在父类构造器时,直接传入对应的参数。
// 父类
class Animal(val name:String, val age:Int) {
println(s"父类构造器......${name} ${age}")
def eat(): Unit = {
println(s"${name} ${age} eating....")
}
}
// 子类
class Dog(name:String, age:Int, var color:String) extends Animal(name, age){
println(s"子类构造器...... ${name} ${age} ${color}")
}
def main(arg: Array[String]): Unit = {
val dog1 = new Dog("旺财", 1, "黑色")
dog1.eat()
}