📜  在 Scala 中调用超类构造函数(1)

📅  最后修改于: 2023-12-03 15:07:49.125000             🧑  作者: Mango

在 Scala 中调用超类构造函数

在 Scala 中,调用父类的构造函数需要使用 super 关键字。这个关键字不仅限于在构造函数中使用,也可以在类中的方法里使用。

调用父类构造函数的语法

使用 Scala 构造函数调用父类的构造函数的语法如下:

class Subclass extends Superclass(args) {
  // subclass constructor code
}

其中,Subclass 是子类,Superclass 是父类, args 是构造函数的参数列表。

在子类中调用父类的构造函数时,需要将参数传递给父类构造函数。如果父类有多个构造函数,可以使用 super() 调用默认构造函数,或者使用 super(args) 调用指定的构造函数。

class Subclass extends Superclass(args) {
  def this() {
    this("default value")
  }
  def this(a: Int) {
    this("default value")
  }
}

在上面的例子中,Subclass 有一个默认构造函数以及一个接收整数参数的构造函数。它们都调用了父类构造函数,并且都默认传递了一个字符串参数 "default value"。

调用父类方法的语法

在 Scala 中,可以使用 super 访问父类的成员方法和成员变量。

class Superclass {
  def printMessage(): Unit = {
    println("Hello from superclass")
  }
}

class Subclass extends Superclass {
  override def printMessage(): Unit = {
    super.printMessage()
    println("Hello from subclass")
  }
}

在上面的例子中,Subclass 覆盖了其父类的 printMessage() 方法。super.printMessage() 调用父类的 printMessage() 方法,输出 "Hello from superclass",而 println("Hello from subclass") 输出了 "Hello from subclass"。