这两个构造函数之间有什么区别。
public Students(String name, String address) {
    super();
    this.name = name;
    this.address = address;
}
/*Here is constructor without super function call.*/
public Students(String name, String address) {
    this.name = name;
    this.address = address;
}发布于 2015-08-27 17:10:31
如果没有对超类构造函数的显式调用,编译器将生成对super()的调用。正因为如此,你们的例子没有区别。
发布于 2015-08-27 17:09:50
没有区别,这只是一个明示和含蓄的问题。在第二种情况下,如果从父类继承的话,它会隐式调用这个学生类的超级构造函数。读更多关于这个的文章。你可以找到更多的信息,如果你谷歌它。
public class A {
    //there is a hidden constructor. Even if you explicitly write it  
    //public A(){
    //}
}
public class B extends A {
 private int i;
public B(int x){
   this.i = x;
}
}创建对象表单B时,首先隐式调用A的构造函数。但是您可以显式地指定它。
作为
public B(int x){
       super();
       this.i = x;
}发布于 2015-08-27 17:27:58
有超功能的构造和没有超功能的构造有什么区别?
它可以很容易的测试。在这个案件中,它们实际上是一样的。更重要的是,您可能想知道何时以及如何使用超级。
运行以下代码:
public class Test
{             
    public static void main(String[] args) 
    {       
        new Students("a", "b");
    } 
}
class Parent
{
    public Parent(){
        System.out.println("Parent class constructor invoked");
    }
}       
class Students extends Parent
{
    String name;
    String address;
    public Students(String name, String address) {
        super();
        this.name = name;
        this.address = address;
    }
}输出:调用父类构造函数
现在我们删除super();
class Students extends Parent
{
    String name;
    String address;
    public Students(String name, String address) {
        this.name = name;
        this.address = address;
    }
}输出:调用父类构造函数
就像类是如何隐式扩展到Object一样,即使您没有将它们扩展到某些东西。“默认情况下”,如果您没有给出一个构造函数,那么每个构造函数中都会调用一个super();。
https://stackoverflow.com/questions/32255478
复制相似问题