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

本文概述

  • 例子1
  • 例子2
  • 笔记
super()是super关键字的特殊用法, 你可以在其中调用无参数的父构造函数。通常, super关键字可用于调用重写的方法, 访问隐藏的字段或调用超类的构造函数。
如果你的方法覆盖了其超类的方法之一, 则可以通过使用关键字super来调用覆盖的方法。
例子1【super关键字在Java中意味着什么】看一下这个例子, 我们将使用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 classsuper.Show(); System.out.println(a); }public static void Main(String[] args){new Son().Show(); }}

输出将如下所示:
100200

我们将从Son类执行Show方法, 在子类的Show方法内部, 我们将使用super.Show执行Base类的show方法。
笔记每当我们在派生类构造函数中使用super()或super(arguments)时, super都必须始终作为派生类构造函数主体中的第一个可执行语句, 否则会出现编译时错误(对super的调用必须是第一个构造函数中的语句)。

    推荐阅读