本文概述
super()是super关键字的特殊用法, 你可以在其中调用无参数的父构造函数。通常, super关键字可用于调用重写的方法, 访问隐藏的字段或调用超类的构造函数。
如果你的方法覆盖了其超类的方法之一, 则可以通过使用关键字super来调用覆盖的方法。
例子1
看一下这个例子, 我们将使用super并通过构造函数发送参数:
class Animal {
public Animal(String arg) {
System.out.println("Constructing an animal: " + arg);
}
}
class Cat extends Animal {
public Cat() {
super("This is from cat constructor");
System.out.println("Constructing a cat.");
}
}
public class Test {
public static void main(String[] a) {
new Cat();
}
}
输出将如下所示:
Constructing an animal: This is from cat constructor
Constructing a dog.
初始化cat函数, 然后执行super方法并首先调用Animal, 最后打印” Constructioning a cat”行。
例子2
现在看下面的示例, 我们将使用super关键字直接从父类中调用方法:
class Base
{
int a = 100;
void Show()
{
System.out.println(a);
}
}
class Son extends Base
{
int a = 200;
void Show()
{
// Call Show method from parent class
super.Show();
System.out.println(a);
}
public static void Main(String[] args)
{
new Son().Show();
}
}
输出将如下所示:
100
200
我们将从Son类执行Show方法, 在子类的Show方法内部, 我们将使用super.Show执行Base类的show方法。
笔记
每当我们在派生类构造函数中使用super()或super(arguments)时, super都必须始终作为派生类构造函数主体中的第一个可执行语句, 否则会出现编译时错误(对super的调用必须是第一个构造函数中的语句)。
评论前必须登录!
注册