类的初始化与实例化顺序
类初始化的条件
1. ⼀个类要创建实例,需要先加载进内存并初始化
2. main⽅法所在的类,需要先加载进内存并初始化
3. 静态内部类和⾮静态内部类⼀样,都是在被调⽤时才会被加载并初始化
4. 加载静态内部类的时候,会先加载外部类,再加载静态内部类(但静态内部类的加载不需要依附外部类:Inner.INNER)类初始化
类初始化就是执⾏<clinit>()⽅法:
静态变量和静态代码块:按顺序从上到下执⾏,只执⾏⼀次
类实例化
实例初始化就是执⾏<init>()⽅法:
1. 有⼏个构造器就有⼏个<init>()⽅法
2. super();(⽗类实例化:第⼀)
3. ⾮静态变量和⾮静态代码块:按顺序从上到下执⾏,只执⾏⼀次
4. 构造器(最后)
不可被重写⽅法
1. final
2. 静态
3. private
外部类调⽤静态内部类中的属性和⽅法
1. 外部类可以通过创建" 静态内部类实例:Inner inner = new Inner() "的⽅法来调⽤静态内部类的⾮静态属性和⽅法
2. 外部类可以直接通过" Outer.Inner.属性/⽅法 "的⽅式直接调⽤静态内部类中的静态属性和⽅法
静态内部类调⽤外部类的属性和⽅法
静态内部类如果要访问外部的成员变量或者成员⽅法,那么必须是静态的
   1)静态内部类可以直接调⽤外部类的静态属性和⽅法
   2)静态内部类可以通过创建外部类实例的⽅法调⽤外部类的⾮静态属性和⽅法
创建静态内部类实例
创建静态内部类的时候是不需要将静态内部类的实例对象绑定到外部类的实例对象上
实例化类和实例化对象  静态内部类属于外部类,⽽不是属于外部类的实例化对象
   1)在⾮外部类中:Outer.Inner oi= new Outer.Inner();
   2)在外部类中:Inner inner = new Inner();

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。