Java 嵌套类型:深入理解局部类与匿名类
1. 作用域与继承
在 Java 编程中,当涉及到顶级类扩展成员类时,需要考虑两个不同的层次结构。
- 继承层次结构 :从超类到子类,定义了成员类继承的字段和方法。
- 包含层次结构 :从包含类到被包含类,定义了成员类作用域内可访问的字段和方法。
这两个层次结构是完全不同的,应避免创建命名冲突。若超类中的字段或方法与包含类中的字段或方法同名,继承的字段或方法将优先于包含类中同名的字段或方法。为防止混淆,应避免过深的包含层次结构。若类嵌套超过两层,可能会带来更多的混乱。若类的继承层次较深,可考虑将其定义为顶级类而非非静态成员类。
2. 局部类
局部类是在 Java 代码块中局部声明的类,而非作为类的成员。只有类可以局部定义,接口、枚举类型和注解类型必须是顶级或静态成员类型。通常,局部类在方法中定义,也可在类的静态初始化器或实例初始化器中定义。由于所有 Java 代码块都出现在类定义中,所有局部类都嵌套在包含类中。
2.1 局部类的特点
- 与成员类一样,局部类与包含实例相关联,可访问包含类的任何成员,包括私有成员。
- 除了访问包含类定义的字段,局部类还可以访问局部方法定义作用域内且声明为 final 的局部变量、方法参数或异常参数。
2.2 局部类的限制
- 局部类的名称仅在定义它的代码块内有效,不能在该代码块外使用。不过,在类作用域内创建的局部类实例可以在该作用域之外继续存在。
超级会员免费看
订阅专栏 解锁全文
314

被折叠的 条评论
为什么被折叠?



