黑马程序员技术交流社区

标题: java基础(深入浅出版) 面试题总结之day10:面向对象-内部类 [打印本页]

作者: huang_bing_hua    时间: 2016-2-25 20:42
标题: java基础(深入浅出版) 面试题总结之day10:面向对象-内部类
  1. class Outer {
  2.         private int num  = 10;
  3.        
  4.         public void method() {
  5.                 //int num2 = 20;
  6.                 //final int num2 = 20;
  7.                 class Inner {
  8.                         public void show() {
  9.                                 System.out.println(num);
  10.                                 //从内部类中访问本地变量num2; 需要被声明为最终类型
  11.                                 System.out.println(num2);//20
  12.                         }
  13.                 }
  14.                
  15.                 //System.out.println(num2);
  16.                
  17.                 Inner i = new Inner();
  18.                 i.show();
  19.         }
  20. }

  21. class InnerClassDemo5 {
  22.         public static void main(String[] args) {
  23.                 Outer o = new Outer();
  24.                 o.method();
  25.         }
  26. }
复制代码
面试题:
                局部内部类访问局部变量的注意事项?以及原因
                A:局部内部类访问局部变量必须用final修饰
                B:为什么呢?
                        局部变量是随着方法的调用而调用,随着调用完毕而消失。
                        而堆内存的内容并不会立即消失。所以,我们加final修饰。
                        加入final修饰后,这个变量就成了常量。既然是常量。num2消失了。
                        我在内存中存储的是数据20,所以,我还是有数据在使用。


作者: yashiro    时间: 2016-2-25 22:06
不错,不错,老师真有心,谢谢了




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