java - 什么时候使用 super() ?

标签 java inheritance super

我目前正在 Java 类(class)中学习类继承,但我不明白何时使用 super()打电话?

编辑:
我发现这个代码示例其中 super.<em>variable</em>使用:

class A
{
    int k = 10;
}

class Test extends A
{
    public void m() {
        System.out.println(super.k);
    }
}

所以我明白,在这里,你必须使用 super访问k父类(super class)中的变量。然而,在任何其他情况下, super(); 会做什么?做?靠自己吗?

最佳答案

准确地调用super()总是是多余的。它显式地执行否则隐式执行的操作。这是因为,如果您省略对 super 构造函数的调用,则无论如何都会自动调用无参 super 构造函数。并不是说这种风格不好;而是说这种风格不好。有些人喜欢直白。

但是,当 super 构造函数接受您想要从子类传入的参数时,它就会变得有用。

public class Animal {
   private final String noise;
   protected Animal(String noise) {
      this.noise = noise;
   }

   public void makeNoise() {
      System.out.println(noise);
   }
}

public class Pig extends Animal {
    public Pig() {
       super("Oink");
    }
}

关于java - 什么时候使用 super() ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45007332/

相关文章:

java - J面板API : Inheritance

python多重继承使用super将参数传递给构造函数

java - 调用 super.super.method,跳过 super.method

java - 如何在Java中向Date对象添加当前时间戳?

java - 如何在 ListView 中传递所选行的 id 并在另一个 Activity 中获取行的值,值存储在 sqlite 数据库中

Javascript 原型(prototype)继承与 object.create 和 call 没有给出函数错误

javascript - AngularJS $scope 继承服务

java - JDBC 驱动程序不支持通过检索标识列进行批量更新。为什么?

java - 如何使用Java将h.264直播流编码为RTP数据包

java - 当没有明确定义的父类(super class)时,为什么要在父类(super class)中使用 super 调用