什么时候使用super()?

我目前正在Java课程中学习有关类继承的信息,我不知道何时使用该super()调用?


编辑:

我发现使用此代码示例:super.variable


class A

{

    int k = 10;

}


class Test extends A

{

    public void m() {

        System.out.println(super.k);

    }

}

因此,我知道在这里,您必须使用它super来访问k超类中的变量。但是,在任何其他情况下,该怎么super();办?在其自己的?


杨__羊羊
浏览 614回答 3
3回答

ABOUTYOU

精确 调用始终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");    }}

明月笑刀无情

super当您想在父类中重写某个方法时要从父类调用方法时,也可以在子类中使用该关键字。例:public class CellPhone {    public void print() {        System.out.println("I'm a cellphone");    }}public class TouchPhone extends CellPhone {    @Override    public void print() {        super.print();        System.out.println("I'm a touch screen cellphone");    }    public static void main (strings[] args) {        TouchPhone p = new TouchPhone();        p.print();    }}在此,该行super.print()调用print()超类的方法CellPhone。输出将是:I'm a cellphoneI'm a touch screen cellphone

UYOU

您可以将其用作子类构造函数的第一行,以调用其父类的构造函数。例如:public class TheSuper{    public TheSuper(){        eatCake();    }}public class TheSub extends TheSuper{    public TheSub(){        super();        eatMoreCake();    }}构造的实例TheSub将同时调用eatCake()和eatMoreCake()
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java