Java非静态内部类为什么不能有静态成员
来源:互联网 发布:网络推广渠道有哪些 编辑:程序博客网 时间:2024/04/30 07:10
对于Java类加载顺序我们知道,首先加载类,执行static变量初始化,接下来执行对象的创建,如果我们要执行代码中的变量i初始化,那么必须先执行加载OuterClass,再加载Innerclass,最后初始化静态变量i,问题就出在加载Innerclass上面,我们可以把InnerClass看成OuterClass的非静态成员,它的初始化必须在外部类对象创建后以后进行,要加载InnerClass必须在实例化OuterClass之后完成 ,java虚拟机要求所有的静态变量必须在对象创建之前完成,这样便产生了矛盾。
Verion 0.11:
对于红色标记的部分,当时理解上有误,我们知道InnerClass可以有静态常量(static final),那么InnerClass类加载一定在OuterClass对象创建之前完成。
2 静态内部类可以有静态成员:
我们可以把静态内部类作为外部类OuterClass的一个静态成员,在执行类加载过程中,静态内部类在加载OuterClass后会进行初始化,同样的原理,静态内部类的静态成员也将被初始化,进行内存的分配,注意到,这时无论是内部类还是外部类,对象都没有实例化,这也说明了非静态内部类为什么不能有静态成员的原因。
0 0
- Java非静态内部类为什么不能有静态成员
- Java非静态内部类为什么不能有静态成员
- Java内部类(3):非静态内部类为什么不能有静态成员变量和静态方法。
- 非静态内部类不能有静态成员?
- 为何非静态内部类不能有静态成员
- java非静态内部类为何不能有静态的成员?
- java非静态内部类为何不能有静态的成员?
- 非静态内部类中为什么不能存在静态变量
- 成员内部类里面为什么不能有静态成员和方法?
- java为什么非静态内部类中不能有static修饰的属性,但却可以有常量?
- 非静态内部类不能有静态声明
- Java内部类_成员内部类_非静态
- 【Java语法】java中成员内部类内为什么不允许有任何静态声明搜索
- java再复习——成员内部类为什么不能定义静态变量
- java的静态成员和静态方法,非静态内部类和静态内部类的区别
- 非静态内部类为什么可以访问外部类的静态成员
- JAVA静态和非静态内部类
- 关于内部类为什么可以有静态常量,不能有静态变量的原因?
- ZOJ 3873
- python访问mysql
- javascript基础3-对象
- 图像膨胀dilate函数用法示例
- Caffe笔记:python图像识别与分类
- Java非静态内部类为什么不能有静态成员
- pyinstaller的使用python 打包程序
- 6. ZigZag Conversion (Easy)
- Java之多线程之锁重入
- 西电1002——小W的塔防
- 实现自己的ArrayList和HashMap
- 图像腐蚀erode函数用法示例
- os模块中的shutil的使用方式与方法
- ZeroMQ 学习