A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

  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. }
复制代码

评分

参与人数 1黑马币 +3 收起 理由
船长 + 3

查看全部评分

4 个回复

倒序浏览
楼主你可以在Outer类中定义一个获取该类的方法
  1. public Inner inner()
  2.         {               
  3.                 return new Inner();
  4.         }
复制代码



评分

参与人数 1黑马币 +3 收起 理由
船长 + 3 赞一个!

查看全部评分

回复 使用道具 举报
我知道啦。若直接在主函数内去访问private的内部类,编译会失败。若是在外部类里面建立一内部类的对象,是可以直接访问的。也就是代码中的访问方式一。
回复 使用道具 举报
或者你也可以试试单例设计模式
回复 使用道具 举报
可以创建一个Inner的对象,通过对象访问。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马