在 Scala 中调用超类的方法
当我们要调用超类方法时会用到这个概念。因此,每当基类和子类具有相同的命名方法时,为了解决歧义,我们使用super关键字来调用基类方法。关键字“super”与继承的概念一起出现。
下面是在超类上调用方法的示例。
示例 #1:
// Scala program to call a method
// on a superclass in Scala
/* Base class ComputerScience */
class ComputerScience
{
def read
{
println("I'm reading")
}
def write
{
println("I'm writing")
}
}
/* Subclass Scala */
class Scala extends ComputerScience
{
// Note that readThanWrite() is only in Scala class
def readThanWrite()
{
// Will invoke or call parent class read() method
super.read
// Will invoke or call parent class write() method
super.write
}
}
// Creating object
object Geeks
{
// Main method
def main(args: Array[String])
{
var ob = new Scala();
// Calling readThanWrite() of Scala
ob.readThanWrite();
}
}
输出:
I'm reading
I'm writing
在上面的例子中,我们使用super关键字调用超类的多个方法。
示例 #2:
// Scala program to call a method
// on a superclass in Scala
/* Super class Person */
class Person
{
def message()
{
println("This is person class");
}
}
/* Subclass Student */
class Student extends Person
{
override def message()
{
println("This is student class")
}
// Note that display() is only in Student class
def display()
{
// will invoke or call current class message() method
message ()
// will invoke or call parent class message() method
super.message
}
}
/* Creating object */
object Geeks
{
// Main method
def main(args: Array[String])
{
var s = new Student();
// Calling display() of Student
s.display();
}
}
输出:
This is student class
This is person class
在上面的例子中,我们已经看到,如果我们只调用方法message()
那么,当前类message()
被调用,但是使用super关键字,超类的message()
也可以被调用。