如题,示例代码:
class InnerClass1
{
   int a=0;
   
   class Test {
   int a=9;
   public void p()
   {
(*)    System.out.println(a+"  OK!");
   }
   }
 }*句打印的是内部类的a,如何可以访问外部类的a?
谢谢指教!!~~~

解决方案 »

  1.   

    class InnerClass
    {
       int a=0;
       
       class Test {
       int a=9;
       
       InnerClass ic = new InnerClass();
       public void p()
       {
       System.out.println(ic.a +"  OK!");//这里是内部类访问外部类
       }
       
       
       }
       public static void main (String[] args){
        InnerClass ic = new InnerClass();
        InnerClass.Test test = ic.new Test();
        test.p();!");//这里是外部类访问内部类
       }
       
     }
      

  2.   

    public class Test {
      int x = 10;  public Test() {
        new Inner().foo();
      }  class Inner {
        int x = 100;
        public void foo() {
          System.out.println(x); //Inner.x
          System.out.println(Test.this.x); //Test.x
        }
      }  public static void main(String[] args) {
        new Test();
      }
    }
      

  3.   

    要想在内部类中访问其所属外部类的成员,可以采用如下形式:
    public class outCls {
    int a = 0; class innerCls {
    int a = 9;
    public void p() {
    System.out.println("a=" + outCls.this.a);
    }
    } public void print() {
    new innerCls().p();
    } public static void main(String[] args) {
    outCls obj = new outCls(); obj.print();
    }
    }
      

  4.   

    class InnerClass
    {
       int a=0;
       
       class Test {
       int a=9;
       private InnerClass ic;
       //改进一下
       public Test(InnerClass ic){this.ic = ic}//将Test的创建者传进来或按需要传递
       public void p()
       {
       System.out.println(ic.a +"  OK!");//这里是内部类访问外部类
       }
       
       
       }
       public static void main (String[] args){
       InnerClass ic = new InnerClass();
       InnerClass.Test test = ic.new Test();
       test.p();!");//这里是外部类访问内部类
       }
     }