2015-07-12 2 views
0

Зачем нужен следующий код для ошибки компиляции (конструктор AA() не определен)? Не следует ли ему вызвать конструктор по умолчанию?Почему я получаю ошибку конструктора undefined?

public class A{ 
    public A(){ } 
} 

public class AA extends A{ 
    public AA(int aa){ } 
} 

public class C{ 
    public static void main(String[] args){ 
     A a= new AA(); 
    } 
} 
+0

ли АА другие конструкторы? – Eran

+0

@Eran Да, я редактировал код. – Jaja

ответ

2

Компилятор только добавит конструктор по умолчанию в class если нет конструктора в class, который не относится к AA.

8.8.9 Default Constructors(Java language specification)

Если класс не содержит объявления конструктора, то конструктор по умолчанию неявно объявляется

0

Пишет

A a= new AA(); // try to invoke default constructor 

Но нет default конструктора в классе AA потому что вы пишете свой собственный конструктор

public AA(int aa){ } 

Так попробуйте это:

int someInteger = 1; 
A a= new AA(someInteger); 
Смежные вопросы