📜  在 Scala 中调用超类的方法(1)

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

在 Scala 中调用超类的方法

在 Scala 中,可以通过 super 关键字调用父类或者超类的方法。这在一些情况下非常有用,比如在子类中覆盖父类方法时需要在子类中保留超类方法的功能。

覆盖超类方法

可以使用 override 关键字来覆盖超类或者父类的方法,然后在方法内部使用 super 调用超类或者父类的方法。

示例代码如下:

class Animal {
  def speak: Unit = println("Animal speaks")
}

class Cat extends Animal {
  override def speak: Unit = {
    super.speak
    println("Cat purrs")
  }
}

val cat = new Cat
cat.speak // 输出 "Animal speaks" 和 "Cat purrs"

上面的示例代码中,Cat 类继承自 Animal 类,并覆盖了 speak 方法。在 speak 方法中首先调用超类的 speak 方法,然后在输出 "Cat purrs"。

调用超类方法

在方法内部使用 super 关键字可以调用超类或者父类的方法。

示例代码如下:

class Animal {
  def speak: Unit = println("Animal speaks")
}

class Cat extends Animal {
  override def speak: Unit = {
    super.speak
    println("Cat purrs")
  }
  
  def animalSpeak: Unit = super.speak
}

val cat = new Cat
cat.speak // 输出 "Animal speaks" 和 "Cat purrs"
cat.animalSpeak // 输出 "Animal speaks"

上面的示例代码中,在 Cat 类中定义了一个名为 animalSpeak 的方法,它调用了超类 Animalspeak 方法。在调用时,使用 super 关键字调用超类方法。

总结

在 Scala 中,使用 super 关键字可以调用超类或者父类的方法,很有用。在子类或者派生类中覆盖超类或者父类方法时,如果需要在子类或者派生类中保留超类或者父类方法的功能,则可以使用 super 关键字调用超类或者父类方法。