2012-04-20 3 views
-2

У меня есть образец кода, чтобы решить, который основан на inner классов:головоломка на внутренних классов и класса Скрытие

package inner; 

class A { 
    void m() { 
     System.out.println("Outer"); 
    } 
} 

public class TestInner { 
    public static void main(String[] args) { 
     new TestInner().go();  
    } 

    private void go() { 
     new A().m(); 
     class A{ 
      void m(){ 
       System.out.println("Inner"); 
      } 
     } 
     new A().m(); 
    } 
    class A{ 
      void m(){ 
      System.out.println("Middle"); 
     } 
    } 
} 

Выходной сигнал дается выше пример кода является:

Middle 
Inner 

И мой вопрос заключается в том, что я не хочу использовать имя пакета для создания объекта, как я могу напечатать вывод как:

Outer 
Inner 
+4

У вас есть 2 часа. Нет орфографических ошибок. – sp00m

+0

Пожалуйста, используйте жирный шрифт тогда и только тогда, когда это абсолютно необходимо с этого момента. – Lion

+0

Это очень надуманная головоломка, я не вижу, что интересно, так как это просто пространство имен. Вам нужно будет увидеть несколько миллионов строк на уровне уровня Java, прежде чем вы столкнетесь со вторым классом private-private внутри блока компиляции. –

ответ

0

Поскольку использование пакета является, очевидно, ответом, я предполагаю, что вы ищете что-то тупое.

Вы можете добавить внешний класс и позвонить ему.

class B extends A { } 

// in TestInner.go() 
    new B().m(); 
    class A{ 
     void m(){ 
      System.out.println("Inner"); 
     } 
    } 
    new A().m(); 
+3

У меня есть лучший: 'System.out.println (« Outer \ nInner »);' Это хороший ответ, как любой :) –

0
public class TestInner { 
public static void main(String[] args) { 
    new TestInner().go();  
} 

private void go() { 
    new inner.A().m();  //will produce output "Outer" 
    class A{ 
     void m(){ 
      System.out.println("Inner"); 
     } 
    } 
    new A().m();    //will produce output "Inner" 
} 
class A{ 
     void m(){ 
     System.out.println("Middle"); 
    } 
} 
Смежные вопросы