黑猴子的家:Scala 超类的构造

类有一个主构器和任意数量的辅助构造器,而每个辅助构造器都必须以对先前定义的辅助构造器或主构造器的调用开始。子类的辅助构造器最终都会调用主构造器,只有主构造器可以调用超类的构造器。辅助构造器永远都不可能直接调用超类的构造器。在Scala的构造器中,你不能调用super(params)

class Person(val name: String, val age: Int) {
  override def toString = getClass.getName + "[name=" + name +
    ",age=" + age + "]"
}
class Employee(name: String, age: Int, val salary : Double) extends Person(name, age) {
  override def toString = super.toString + "[salary=" + salary + "]"
}

尖叫提示:子类的构造器调用,必然伴随着父类构造器的调用,这样不使用super,很爽

class Person(val name: String, val age: Int) { 
  
}

class Employee2(name: String, age: Int, val salary : Double) 
                                 extends Person(age = age,name = name) { 

}

class Employee3(name: String, age: Int, val salary : Double) extends Person(name,10) {
  
}

你可能感兴趣的:(黑猴子的家:Scala 超类的构造)