黑马程序员技术交流社区

标题: 在定义内部类时,我若把内部类private了,那又怎么去访问内部类了?求解答。 [打印本页]

作者: 彭柏良    时间: 2014-12-5 10:41
标题: 在定义内部类时,我若把内部类private了,那又怎么去访问内部类了?求解答。
  1. class Outer
  2. {
  3.         private int x = 3;
  4.         private class Inner //若我加私有的话,怎么访问了?
  5.         {
  6.                 int x = 4;
  7.                 void function()
  8.                 {
  9.                         int x = 6;
  10.                         System.out.println("Inner Function Variable:"+x);//打印结果为:x=6
  11.                         System.out.println("Inner Variable:"+this.x);//内部类成员变量 x = 4
  12.                         System.out.println("Outer Variable:"+Outer.this.x);//外部类成员变量 x = 4
  13.                 }
  14.         }
  15.         void method()
  16.         {
  17.                 //外部类访问内部方式一:
  18.                 Inner in = new Inner();
  19.                 in.function();
  20.         }
  21. }
  22. class InnerClassDemo
  23. {
  24.         public static void main(String[] args)
  25.         {
  26.                 Outer out = new Outer();
  27.                 out.method();
  28.                 //在主函数中直接访问内部类中的成员
  29.                 Outer.Inner oi = new Outer().new Inner();
  30.                 oi.function();
  31.         }
  32. }
复制代码

作者: caobin    时间: 2014-12-5 10:51
楼主你可以在Outer类中定义一个获取该类的方法
  1. public Inner inner()
  2.         {               
  3.                 return new Inner();
  4.         }
复制代码




作者: 彭柏良    时间: 2014-12-5 10:55
我知道啦。若直接在主函数内去访问private的内部类,编译会失败。若是在外部类里面建立一内部类的对象,是可以直接访问的。也就是代码中的访问方式一。
作者: kane    时间: 2014-12-5 10:56
或者你也可以试试单例设计模式
作者: 提米特    时间: 2014-12-6 20:28
可以创建一个Inner的对象,通过对象访问。




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2