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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

希望懂的大神说原因说的详细点。
  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. }  
复制代码

10 个回复

倒序浏览
这事什么
回复 使用道具 举报
你并没有把a的值赋值给y,把final int y = 4; 改为final int y = a; 即可
回复 使用道具 举报
答案是4,不过这种语法题莫名其妙
回复 使用道具 举报
好吧,内部类,我还需要加强复习下,多谢了,我复习一遍再试试看
回复 使用道具 举报
我也来看看
回复 使用道具 举报
out 调用 method ,method 中 给 y 赋值 y=4;method的最后新建一个内部类对象,同时此对象调用方法function(),输出y的值  4
回复 使用道具 举报
你应该是想打印a的值吧,你主函数里赋予的值没有意义啊
回复 使用道具 举报
Outer里面没有使用到参数a,使用到了y,就不会实现传入不同参数,输出相应的结果的现象吧
回复 使用道具 举报
内部类定义在局部时,不能被成员修饰符访问。可以访问外部类的成员,因为持有外部类的引用。但是不可访问它所在局部的变量。只能访问被final修饰的成员变量。你应该想问的是这个?
回复 使用道具 举报
这个代码也是醉了。。。。你并没有把a的值付给y啊。。。。这运行代码有意义吗???
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马