【发布时间】:2016-09-11 17:07:23
【问题描述】:
我对空构造函数的目的感到困惑,让我详细说明一下:
如果我有课..
public class Test {
private int x;
private int a[];
private static int y;
public Test() {
a = new int[3];
}
}
我知道存在一个空的默认构造函数:
public Test() {
//or at least I think it exists
} //what is its purpose?
如果我有一个 main 方法并编写以下代码:
Test t1 = new Test();
调用了哪个构造函数?还是空的构造函数被实例化 a[] 的构造函数覆盖?
如果我随后实例化 5 个 Test 实例,分配多少整数内存位置?
好糊涂……
【问题讨论】:
-
这看起来像你在做作业。我会阅读帖子的规则问题。还要确保您自己进行研究和搜索网络,以避免这样的反应。
-
你是对的,默认情况下会有一个默认构造函数,即没有参数的构造函数。如果您编写自己的构造函数也不带参数,那么这将覆盖默认构造函数。
-
空的构造函数只有在你没有明确定义时才存在。
-
澄清:默认构造函数仅由编译器创建,如果您没有任何构造函数。任何构造函数,即使是带参数的构造函数,都会抑制默认构造函数。
-
感谢@Scary Wombat、shmosel 和 Andreas 为我澄清了这一点。我没有意识到默认值被无参数方法抑制。谢谢戴尔。
标签: java memory constructor