黑马程序员技术交流社区

标题: 内部类问题 [打印本页]

作者: 张智文    时间: 2013-8-9 17:11
标题: 内部类问题
  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. }
复制代码

作者: 神之梦    时间: 2013-8-10 00:18
6{:soso_e128:}
作者: 封号了...    时间: 2013-8-10 01:46
本帖最后由 封号了... 于 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修饰(这个不是太明白)——————>求高人指点





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