Почему:
Если класс не предоставляет constructors
то default constructor(constructor without parameter)
дается компилятором во время компиляции, но если класс содержит parameterized constructors
то конструктор по умолчанию не предусмотрен компилятором.конструктора по умолчанию не вызывается
Я комментирую код, указанный ниже. Он дает ошибку компиляции.
Код:
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();
}
}
Console Ошибка:
Когда я вызван только parameterized constructor
. Его работоспособность. Но если вы хотите вызвать default constructor
с parameterized constructor
. Компилятор дает ошибку компиляции, как показано на рисунке.
Любая немедленная помощь будет очень заметной. Спасибо
Ум, поэтому предоставляйте свой собственный конструктор без параметров, это так просто. Компилятор * только * предоставляет конструктор по умолчанию, если вы не предоставили его явно. –
Это (довольно много) точный дубликат http://stackoverflow.com/questions/11792207/why-does-the-default-parameterless-constructor-go-away-when-you-create-one-with - что должен иметь информацию, которую вы хотите –
@JonSkeet, я полностью согласен с вами. Я просто хочу знать, почему? –