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)
  }
}
Copyright © 尚硅谷大数据 2019 all right reserved,powered by Gitbook
该文件最后修订时间: 2019-04-12 13:52:27

results matching ""

    No results matching ""