8.4.4 Scala 中超类的构造
大家都知道, 在 Java 中,创建子类对象时,子类的构造器总是去调用一个父类的构造器(显式或者隐式调用)
通过前面的学习我们知道, 在 Scala 中, 辅助构造器总是会调用到当前类的主构造器, 所以, 就不可能调用到父类的构造器.
所以,
在继承的时候, 我们必须指定父类, 也可以指定父类的构造器.
package com.atguigu
object ConstructDemo {
def main(args: Array[String]): Unit = {
val f1 = new Son("李四", 20)
println(f1)
f1.show()
}
}
class Father(name: String) {
var age: Int = _
def this(name: String, age: Int) {
this(name)
this.age = age
}
}
// 继承Father, 并调用父类的单个参数的构造器(主构造器) 类似于Java 的Super(name)
class Son(name: String, age: Int) extends Father(name) {
override def toString: String = {
this.name + " " + this.age
}
def show(): Unit ={
println(this.name)
}
}