超级关键字没有扩展到超类

时间:2014-05-03 07:22:50

标签: java superclass super

有一个简单的程序,在构造函数中,调用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));
    }

}

3 个答案:

答案 0 :(得分:9)

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

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

答案 1 :(得分:1)

  

无需添加super(),因为默认情况下会添加Object

它会调用Object类的默认构造函数,因为在JAVA中,默认情况下每个类都会扩展{{1}}。

答案 2 :(得分:0)

代码中的构造函数的工作原理与

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

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