2015-10-18 4 views
-2
class Base { 

    Base show() { 
     System.out.println("Base"); 
     return new Base(); 
    } 

    class Child4 extends Base { 

     Child4 show() { 
      System.out.println("Child4"); 
      return new Child4(); 
     } 

    } 

    public static void main(String... s) { 
     Child4 C1 = new Child4(); 
     C1.show(); 
    } 

} 
+0

Hi Disha. Добро пожаловать в переполнение стека. Пожалуйста, попробуйте понять ваш вопрос: что вы пытаетесь с кодом, который вы опубликовали? Вы получаете сообщение об ошибке, или код ведет себя по-другому, чем вы думаете? Как вы думаете, что он должен делать, и какое поведение вы наблюдали? –

+0

Не вставляйте класс Child4 в базовый класс. Используйте два разных файла: по одному для каждого класса. –

+0

Возможный дубликат [нестатическая переменная не может ссылаться на статический контекст] (http://stackoverflow.com/questions/2559527/non-static-variable-cannot-be-referenced-from-a-static-context) – csmckelvey

ответ

0

В вашем примере Child4 не является статическим внутренним классом класса Base (см here документации на внутренних классов). Это означает, что вам нужен экземпляр класса Base, чтобы создать объект класса Child4.

Поскольку в вашем примере нет доступа из экземпляра Child4 к внешнему экземпляру Base, кажется, что использование нестатического внутреннего класса не предназначено. Вы должны объявить этот внутренний класс статического, с

static class Child4 extends Base { 

Таким образом, вызов new Child4 будет законен от main статического контекста.

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

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