设为首页 加入收藏

TOP

深入理解Java:内部类(四)
2015-07-16 12:55:22 来源: 作者: 【 】 浏览:10
Tags:深入 理解 Java 部类
然后程序才能编译通过。


为什么非静态内部类中不能有static修饰的属性,但却可以有常量?


如:
public class InnerClassDemo{
? ? int x;
? ? class A{
? ? ? ? static? int a = 0;//这样写是不合法的.
? ? ? ? static final int b=0;//这样写是合法的


? ? }
}


定义一个静态的域或者方法,要求在静态环境或者顶层环境,即如果加上 static class A变成静态内部类就ok非静态内部类 依赖于一个外部类对象,而静态域/方法是不依赖与对象——仅与类相关(细说了,就是加载静态域时,根本没有外部类对象)因此,非静态内部类中不能定义静态域/方法,编译过不了。


而常量之所以可以(不论有无static),因为java在编译期就确定所有常量,放到所谓的常量池当中。常量的机制和普通变量不一样


为什么匿名内部类和局部内部类只能访问final变量


参考:


首页 上一页 1 2 3 4 下一页 尾页 4/4/4
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇关于Java内部类的“内部” 下一篇深入理解Java垃圾回收机制

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: