面试题答案
一键面试- 静态嵌套类StaticInner:
- 初始化顺序:
- 静态变量按声明顺序初始化。
- 静态代码块按出现顺序执行。
- 构造函数在对象创建时执行。
- 与其他内部类关系:与其他非静态内部类(MemberInner、LocalInner、AnonymousInner)生命周期和初始化相互独立,因为静态嵌套类不依赖外部类实例。
- 初始化顺序:
- 成员内部类MemberInner:
- 初始化顺序:
- 外部类实例创建。
- 成员内部类实例变量按声明顺序初始化。
- 成员内部类实例代码块按出现顺序执行。
- 成员内部类构造函数执行。
- 与其他内部类关系:依赖外部类实例,创建成员内部类实例前必须先有外部类实例。与局部内部类、匿名内部类在不同作用域,互不干扰,但都依赖外部类实例。
- 初始化顺序:
- 局部内部类LocalInner:
- 初始化顺序:
- 当包含局部内部类的方法被调用时。
- 局部内部类实例变量按声明顺序初始化。
- 局部内部类实例代码块按出现顺序执行。
- 局部内部类构造函数执行。
- 与其他内部类关系:作用域局限于方法内,与其他内部类在不同作用域,互不干扰,但同样依赖外部类实例(若访问外部类成员)。
- 初始化顺序:
- 匿名内部类AnonymousInner:
- 初始化顺序:
- 当匿名内部类表达式所在代码执行时。
- 匿名内部类实例变量按声明顺序初始化。
- 匿名内部类实例代码块按出现顺序执行。
- 匿名内部类构造(若有构造逻辑,通过实例代码块模拟构造逻辑)。
- 与其他内部类关系:作用域局限于其所在表达式位置,与其他内部类在不同作用域,互不干扰,同样依赖外部类实例(若访问外部类成员)。
- 初始化顺序: