Java中的无参数构造函数和默认构造函数之间的区别


问题内容

其实我不明白,无参数构造函数和默认构造函数有什么区别。

import javax.swing.*;

public class Test extends JFrame {
   public Test() {
     super();
     this.setSize(200,200);
     this.setVisible(true);
   }
   public static void main(Sting[] arg) {
       Test cFrame = new Test();
   }
}

创建名为cFrame的Test对象时,这是否调用此类的默认构造函数?


问题答案:

default构造函数是一个无参数的构造函数,代表您的Java编译器插入; 它包含defaultsuper();(not
supper())的调用,这是默认行为。如果实现任何构造函数,则不再收到默认的构造函数。

JLS-8.8.9。默认构造函数说(部分),

如果一个类不包含构造函数声明,则隐式声明一个没有正式参数且没有throws子句的默认构造函数。

如果要声明的类是原始类Object,则默认构造函数的主体为空。否则,默认构造函数将简单地调用不带参数的超类构造函数。