ami*_*ura 18 java constructor default-constructor
实际上我无法理解no-arg构造函数和默认构造函数之间的区别.
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();
}
}
Run Code Online (Sandbox Code Playgroud)
这是否在创建名为cFrame的Test对象时调用此类的默认构造函数?
Ell*_*sch 22
该default构造函数是一个无参数的构造函数,代表您的Java编译器插入; 它包含default对super();(not supper())的调用,这是默认行为.如果实现任何构造函数,则不再接收默认构造函数.
JLS-8.8.9.默认构造函数说(部分),
如果类不包含构造函数声明,则隐式声明没有形式参数且没有throws子句的默认构造函数.
如果声明的类是原始类Object,则默认构造函数具有空体.否则,默认构造函数只调用不带参数的超类构造函数.
的default constructor是,Java编译器添加到您的代码,如果没有明确的构造函数可用的构造函数.默认构造函数调用没有args的超类构造函数.
如果添加了自己的构造函数(无论是没有参数还是带参数),编译器在这种情况下都不会添加默认构造函数.
什么是默认构造函数?
如果尚未定义构造函数,则它是由编译器添加的构造函数.
如果您的类已经有构造函数,那么编译器将不会添加默认构造函数.
所以在你的情况下你有构造函数,
public Test(){
super();
this.setSize(200,200);
this.setVisible(true);
}
Run Code Online (Sandbox Code Playgroud)
因此,现在没有JVM调用的默认构造函数.
| 归档时间: |
|
| 查看次数: |
45830 次 |
| 最近记录: |