爲什麼:
如果一個類不提供任何constructors
然後default constructor(constructor without parameter)
由編譯器在編譯時給出,但如果一個類包含那麼默認的構造函數不是由編譯器提供。默認構造函數不調用
我在編譯下面的代碼。它給編譯錯誤。
代碼:
class ConstructorTest
{
// attributes
private int l,b;
// behaviour
public void display()
{
System.out.println("length="+l);
System.out.println("breadth="+b);
}
public int area()
{
return l*b;
}
// initialization
public ConstructorTest(int x,int y) // Parameterized Constructor
{
l=x;
b=y;
}
//main method
public static void main(String arr[])
{
ConstructorTest r = new ConstructorTest(5,10);
ConstructorTest s = new ConstructorTest();
s.display();
r.display();
r.area();
}
}
控制檯錯誤:
當我只調用了parameterized constructor
。它的工作很好,但是當想用parameterized constructor
調用default constructor
。編譯器給出編譯錯誤,如圖所示。
任何即時幫助將非常可觀。謝謝
嗯,所以提供你自己的無參數構造函數 - 就這麼簡單。如果沒有明確提供,編譯器* only *提供了一個默認構造函數。 –
這是一個(非常)精確重複的http://stackoverflow.com/questions/11792207/why-does-the-default-parameterless-constructor-go-away-when-you-create-one-with - 那應該有你想要的信息 –
@JonSkeet,我完全同意你的看法。我只想知道爲什麼? –