2016-04-25 4 views
0

Это мой код:Невозможно создать внутренний класс

public class A { 
    int age; 

    void Do() { 
     System.out.println("..."); 
    } 

    class B extends A { 
    } 

    public static void main(String[] args) { 
     B b=new B(); 
    } 
} 

ошибка по адресу:

new B(); 

Почему? Почему это неправильно?

+1

потому что ваш класс B является внутренним классом A. И у вас есть рекурсивное отношение в вашем случае. –

+0

Итак, вы должны сделать B static – Dmitry

+0

. Для получения дополнительной информации см. Java doc https://docs.oracle.com/javase/tutorial/java/javaOO/nested.html – Unknown

ответ

4

Вы объявили B внутренним классом A, поэтому его невозможно создать без предоставления экземпляра класса A.

Вы можете переместить определение B вне А сделать код работы:

class B extends A 
{ 

} 

public class A 
{ 
    int age; 

    void Do() 
    { 
    System.out.println("..."); 
    } 

    public static void main(String[]args) 
    { 
     B b = new B(); 
    } 
} 

Или вы можете оставить структуру класса, как есть, но создать экземпляр А для того, чтобы создать экземпляр B :

B b = new A().new B(); 
+0

Очень спасибо .... – DeSI3

Смежные вопросы