【问题标题】:super keyword without extends to the super class没有延伸到超类的 super 关键字
【发布时间】:2014-06-19 22:12:41
【问题描述】:

有一个简单程序的代码。在构造函数中,super() 被调用而没有扩展到超类,我不明白在这种情况下会做什么?

public class Student {

    private String name;
    private int rollNum;

    Student(String name,int rollNum){
        super(); //I can not understand why super keyword here.
        this.name=name;
        this.rollNum=rollNum;
    }


    public static void main(String[] args) {

        Student s1 = new Student("A",1);
        Student s2 = new Student("A",1);

        System.out.println(s1.equals(s2));
    }

}

【问题讨论】:

    标签: java superclass super


    【解决方案1】:

    不需要添加super(),因为它是默认添加的。

    它将调用Object类的默认构造函数,因为在JAVA中每个类默认扩展Object

    【讨论】:

      【解决方案2】:

      每个没有显式扩展另一个类的类都会隐式扩展java.lang.Object。所以super() 只是调用了 Object 的无参数构造函数。

      请注意,此显式调用是不必要的,因为编译器会为您添加它。当你想调用一个带参数的超类构造函数时,你只需要在构造函数中添加一个super()调用。

      【讨论】:

        【解决方案3】:

        您代码中的构造函数的工作方式与以下相同:

        Student(String name, int rollNum){
            this.name = name;
            this.rollNum = rollNum;
        }
        

        在您的问题中,super() 只是在调用 Object 类的构造函数。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2015-10-07
          • 2018-09-18
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2012-11-14
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多