黑马程序员技术交流社区

标题: 大家看看这个答案是什么,讲讲原因? [打印本页]

作者: ZhangHeng    时间: 2015-7-8 21:04
标题: 大家看看这个答案是什么,讲讲原因?
希望懂的大神说原因说的详细点。
  1. class Outer  
  2. {  
  3.     int x = 3;  
  4.     void method(final int a)  
  5.     {  
  6.         final int y = 4;  
  7.         //局部内部类  
  8.                 class Inner  
  9.         {  
  10.             void function()  
  11.             {  
  12.                 System.out.println(y);  
  13.             }  
  14.         }  
  15.         new Inner().function();//使用局部内部类中的方法。  
  16.     }  
  17. }  
  18. class  InnerClassDemo  
  19. {  
  20.     public static void main(String[] args)   
  21.     {  
  22.         Outer out = new Outer();  
  23.         out.method(7);//打印7  
  24.         out.method(8);//打印8  
  25.     }  
  26. }  
复制代码

作者: Miss.H    时间: 2015-7-8 21:05
这事什么
作者: 虾米吃螃蟹    时间: 2015-7-9 08:46
你并没有把a的值赋值给y,把final int y = 4; 改为final int y = a; 即可
作者: hwy801207    时间: 2015-7-9 08:50
答案是4,不过这种语法题莫名其妙
作者: wing-SF    时间: 2015-7-9 09:19
好吧,内部类,我还需要加强复习下,多谢了,我复习一遍再试试看

作者: 云雀    时间: 2015-7-9 09:25
我也来看看
作者: fmi110    时间: 2015-7-9 10:22
out 调用 method ,method 中 给 y 赋值 y=4;method的最后新建一个内部类对象,同时此对象调用方法function(),输出y的值  4
作者: 拾起落叶    时间: 2015-7-9 10:47
你应该是想打印a的值吧,你主函数里赋予的值没有意义啊
作者: firwood    时间: 2015-7-9 13:53
Outer里面没有使用到参数a,使用到了y,就不会实现传入不同参数,输出相应的结果的现象吧
作者: 心在左边跳    时间: 2015-7-9 14:22
内部类定义在局部时,不能被成员修饰符访问。可以访问外部类的成员,因为持有外部类的引用。但是不可访问它所在局部的变量。只能访问被final修饰的成员变量。你应该想问的是这个?
作者: Love丶cd    时间: 2015-7-9 14:30
这个代码也是醉了。。。。你并没有把a的值付给y啊。。。。这运行代码有意义吗???





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