Java类的初始化顺序
对于静态变量、静态初始化块、变量、初始化块、构造器,它们的初始化顺序依次是(静态变量、静态初始化块)>(变量、初始化块)>构造器
对于继承而言
子类的静态变量和静态初始化块的初始化是在父类的变量、初始化块和构造器初始化之前就完成
明静态变量和静态初始化块是依照他们在类中的定义顺序进行初始化的
静态-父类 变量
静态-父类 初始化块
父类 变量
父类 初始化块
父类 构造器
静态-子类 变量
静态-子类 初始化块
子类 变量
子类 初始化块
子类 构造器
1. 父类--静态变量
2. 父类--静态初始化块
3. 子类--静态变量
4. 子类--静态初始化块
5. 父类--变量
6. 父类--初始化块
7. 父类--构造器
8. 子类--变量
9. 子类--初始化块
10.子类--构造器
在主函数中调用内部类对象方法
1创建外部类 对象
外部类类名 外部类对象名 = new 外部类类名();
2创建内部类对象
内部类类名 内部类对象名 = 外部类对象名.new 内部类类名();
3调用内部类对象的方法
内部类对象名.方法名();
内部类调用外部类的变量
外部类名.this.变量名
静态内部类调用外部类的变量
外部类名.变量名
静态内部类的对象创建不需要创建外部类对象
静态内部类类名 静态内部类对象名 = new 静态内部类类名();
外部类方法中 调用 本方法内部类 中的 方法 一样要new 出来
由于方法内部类不能在外部类的方法以外的地方使用,因此方法内部类不能使用访问控制符和 static 修饰符。