本帖最后由 张然龙 于 2014-4-29 22:56 编辑
匿名内部类的作用就是一次调用就会被回收,因为new的对象没有名字,所以没有指向内存地址的变量接收他,出了代码块就会jvm视为垃圾,等待回收。就算用多态的形式去调用也不能指定子类的名字,而且多态的变量访问规则一般都是看左边的,只有覆盖的方法才能用多态去调用子类的,所以你当前的代码无法在外部调用你内部类中的变量num,而你的show方法是定义在内部类中的,所以可以访问到。
如果楼主想在外部调用num变量,我帮你改下代码 ↓
- class Demo
- {
- public void demo()
- {
- AbsDemo d = new AbsDemo()
- {
- int num = 9;
- public void show()
- {
- System.out.println("num==="+num);
- abc();
- }
- public int abc()
- {
- return num;
- }
- };
- int num=d.abc();
- System.out.println(num);
- }
- }
- class Demo2
- {
- public static void main(String args[])
- {
- new Demo().demo();
- }
- }
复制代码
在接口中定义个abc方法 ,在外部就可以利用多态来调用abc方法返回num的值。
|