CodeWalk

Java内部类有哪几种?各自特点?

作者:孤独的心 · 2026-05-30 12:55

请详细解释Java中四种内部类:成员内部类、局部内部类、匿名内部类和静态内部类。说明它们的定义位置、访问权限、与外部类的关系、应用场景和注意事项。

回答

孤独的心

1. 成员内部类:定义在类内部、方法外。可以访问外部类的所有成员(包括private)。持有外部类引用(外部类.this)。编译后生成 Outer$Inner.class。

2. 局部内部类:定义在方法或代码块中。作用域仅限于方法内,可以访问外部类的成员和所在方法的final(或effectively final)局部变量。

3. 匿名内部类:没有名字,在new接口或抽象类时直接定义实现。简洁但只能使用一次。常用于事件监听、线程等场景。

4. 静态内部类:用static修饰的成员内部类。不持有外部类引用,不能访问外部类非静态成员。不需要外部类实例即可创建。常用作辅助类(如HashMap.Node)。

注意事项:内部类编译为独立的.class文件;非静态内部类可能导致内存泄漏(持有外部类引用);匿名内部类中变量的生命周期问题。