在C#,C++和Java中,当您创建一个使用参数的构造函数时,默认的无参数函数就会消失.我一直都接受这个事实,但现在我开始想知道为什么.
这种行为的原因是什么?它只是一个"安全措施/猜测"说"如果你已经创建了自己的构造函数,你可能不希望这个隐含的构造函数"?或者它是否有技术原因使得编译器在您自己创建构造函数后无法添加一个?
实际上我无法理解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对象时调用此类的默认构造函数?
如果类具有参数化构造函数,为什么Java不提供默认构造函数?请考虑以下示例
class A {
int a;
public A() {
}
public A(int val) {
a = val;
}
}
Run Code Online (Sandbox Code Playgroud)
这里我明确需要添加默认构造函数.有什么理由,为什么Java不为具有参数化构造函数的类提供默认构造函数?