资讯专栏INFORMATION COLUMN

Java™ 教程(使用super关键字)

CKJOKER / 1028人阅读

使用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的例子,MountainBikeBicycle的子类,这是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的构造函数,事实上,情况就是这样,它被称为构造函数链,当需要很长的类层次时,你需要意识到这一点。

上一篇:多态性 下一篇:Object作为超类

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/72875.html

相关文章

  • Java教程(多态性)

    多态性 多态性的字典定义是指生物学中的原理,其中生物体或物种可以具有许多不同的形式或阶段,这个原则也可以应用于面向对象的编程和像Java语言之类的语言,类的子类可以定义它们自己的唯一行为,但仍然共享父类的一些相同功能。 可以通过对Bicycle类的微小修改来演示多态性,例如,可以将printDescription方法添加到显示当前存储在实例中的所有数据的类中。 public void printD...

    J4ck_Chan 评论0 收藏0
  • Java教程(重写和隐藏方法)

    重写和隐藏方法 实例方法 子类中的实例方法的签名(名称,加上其参数的数量和类型)和返回类型与超类中的实例方法相同,将覆盖超类的方法。 子类覆盖方法的能力允许类从行为足够接近的超类继承,然后根据需要修改行为,重写方法与它重写的方法具有相同的名称、数量和参数类型,以及返回类型。重写方法还可以返回由被重写方法返回的类型的子类型,此子类型称为协变返回类型。 覆盖方法时,你可能希望使用@Override注解...

    fox_soyoung 评论0 收藏0
  • [译] Java 8 Nashorn 教程

    摘要:未来的主要发布基于。在中调用函数支持从代码中直接调用定义在脚本文件中的函数。下面的函数稍后会在端调用为了调用函数,你首先需要将脚本引擎转换为。调用函数将结果输出到,所以我们会首先看到输出。幸运的是,有一套补救措施。 原文:Java 8 Nashorn Tutorial 译者:飞龙 协议:CC BY-NC-SA 4.0 这个教程中,你会通过简单易懂的代码示例,来了解Nashorn Ja...

    _ivan 评论0 收藏0
  • Java教程(继承)

    继承 在前面的课程中,你已经多次看到了继承,在Java语言中,类可以从其他类派生,从而从这些类继承字段和方法。 定义:从另一个类派生的类称为子类(也是派生类,扩展类或子类),派生子类的类称为超类(也是基类或父类)。 除了Object没有超类,每个类都有一个且只有一个直接超类(单继承),在没有任何其他显式超类的情况下,每个类都隐式地是Object的子类。 类可以从派生自类的类派生的类派生,依此类推,...

    Achilles 评论0 收藏0
  • Java教程(泛型通配符使用指南)

    泛型通配符使用指南 学习使用泛型编程时更困惑的一个方面是确定何时使用上界通配符以及何时使用下界通配符,此页面提供了设计代码时要遵循的一些准则。 对于本文的讨论,将变量看作提供的两个功能之一是有帮助的: 一个In变量 in变量向代码提供数据,想象一下带有两个参数的复制方法:copy(src, dest),src参数提供要复制的数据,因此它是in参数。 一个Out变量 out变量保存数据以供其他地方使...

    raledong 评论0 收藏0

发表评论

0条评论

CKJOKER

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<