个性化阅读
专注于IT技术分析

super关键字在Java中意味着什么

本文概述

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的调用必须是第一个构造函数中的语句)。

赞(0)
未经允许不得转载:srcmini » super关键字在Java中意味着什么

评论 抢沙发

评论前必须登录!