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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 张智文 中级黑马   /  2013-8-9 17:11  /  1014 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

  1. /*呵呵,,,下面的例子里,???处是填上什么内容,可以显示 Inner:6
  2. 1.直接填写 x,打印输出:Inner:9                  //局部变量,就近调用;
  3. 2.直接填写Outer.this.x  打印输出为:Inner:5      //调用外部类的当前对象之成员变量
  4. 3.什么情况能够显示 Inner:6 呢???*/

  5. class Outer{
  6.         private  int x=5;  

  7.         void OuterDo()
  8.         {
  9.                 int x=6;
  10.                
  11.                 class Inner
  12.                 {
  13.                         int x=9;
  14.                         
  15.                   void  Do()
  16.                         {
  17.                                 System.out.println("Inner:" + ? );
  18.                         }
  19.                 }
  20.                
  21.                 new Inner().Do();
  22.         }

  23. }


  24. class InterDemo
  25. {
  26.         public static void main(String[] args)
  27.         {
  28.                 new Outer().OuterDo();
  29.         }
  30. }
复制代码

评分

参与人数 1技术分 +1 收起 理由
神之梦 + 1 神马都是浮云

查看全部评分

3 个回复

倒序浏览
6{:soso_e128:}
回复 使用道具 举报
本帖最后由 封号了... 于 2013-8-10 01:47 编辑

你是想取Outer类的OuterDo()方法中的int 6吧!
只能把int x = 9;删了 然后将 int = 6;前面加个final
其实如果取外部类中的成员变量应该是Outer.this.x --->5
外部类中方法的值就是
  1. class Outer{
  2.         private  int x=5;  

  3.         int OuterDo()
  4.         {
  5.                 int x=6;
  6.               return x;
  7.         }
  8.         void here(){
  9.                   
  10.             class Inner
  11.             {
  12.               void  Do()
  13.                     {
  14.                             System.out.println("Inner:" + Outer.this.OuterDo() );
  15.                     }
  16.             }
  17.             new Inner().Do();
  18.         }
  19. }


  20. public class InterDemo
  21. {
  22.         public static void main(String[] args)
  23.         {
  24.                 new Outer().here();
  25.         }
  26. }
复制代码
如果你就想现在这样访问只能把int x = 9;里的这个x 定义为其他名字,不然会输出中的x会默认为当前方法中的变量

而且必须要用final修饰(这个不是太明白)——————>求高人指点
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马