java关键字super_Java™ 教程(使用super关键字)

使用super关键字

访问超类成员

如果你的方法覆盖了它的一个超类的方法,你可以通过使用关键字super来调用被重写的方法,你也可以使用super来引用隐藏字段(尽管不鼓励隐藏字段),虑这个类,Superclass:

public class Superclass {

public void printMethod() {

System.out.println("Printed in Superclass.");

}

}

这是一个名为Subclass的子类,它重写了printMethod():

public class Subclass extends Superclass {

// overrides printMethod in Superclass

public void printMethod() {

super.printMethod();

System.out.println("Printed in Subclass");

}

public static void main(String[] args) {

Subclass s = new Subclass();

s.printMethod();

}

}

在Subclass中,简单名称printMethod()引用在Subclass中声明的名称,它覆盖了Superclass中的名称,因此,要引用从Superclass继承的printMethod(),Subclass必须使用限定名,使用super,编译和执行Subclass将打印以下内容:

Printed in Superclass.

Printed in Subclass

子类构造函数

以下示例说明如何使用super关键字来调用超类的构造函数,回想一下Bicycle的例子,MountainBike是Bicycle的子类,这是MountainBike(子类)构造函数,它调用超类构造函数,然后添加自己的初始化代码:

public MountainBike(int startHeight,

int startCadence,

int startSpeed,

int startGear) {

super(startCadence, startSpeed, startGear);

seatHeight = startHeight;

}

调用超类构造函数必须是子类构造函数中的第一行。

调用超类构造函数的语法是:

super();

super(parameter list);

使用super(),可以调用超类无参数构造函数,使用super(parameter list),将调用具有匹配参数列表的超类构造函数。

注意:如果构造函数没有显式调用超类构造函数,Java编译器会自动插入对超类的无参数构造函数的调用,如果超类没有无参数构造函数,则会出现编译时错误,Object确实有这样的构造函数,因此如果Object是唯一的超类,则没有问题。

如果子类构造函数显式或隐式调用其超类的构造函数,你可能会认为将调用一整个构造函数链,一直返回Object的构造函数,事实上,情况就是这样,它被称为构造函数链,当需要很长的类层次时,你需要意识到这一点。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值