面试题答案
一键面试定义
在Java中,成员内部类是定义在另一个类内部的类,作为外部类的一个成员。其定义格式如下:
class OuterClass {
// 外部类成员变量
private int outerVar;
// 成员内部类定义
class InnerClass {
// 内部类成员变量
private int innerVar;
// 内部类方法
public void innerMethod() {
System.out.println("访问外部类变量 outerVar: " + outerVar);
}
}
}
创建实例
要创建成员内部类的实例,必须先有外部类的实例。创建方式如下:
public class Main {
public static void main(String[] args) {
// 创建外部类实例
OuterClass outer = new OuterClass();
// 使用外部类实例创建内部类实例
OuterClass.InnerClass inner = outer.new InnerClass();
inner.innerMethod();
}
}
特点
- 访问权限:
- 成员内部类可以访问外部类的所有成员,包括私有成员。例如上述代码中,
InnerClass
的innerMethod
方法可以访问OuterClass
的私有变量outerVar
。 - 外部类要访问成员内部类的成员,必须通过成员内部类的实例。
- 成员内部类可以访问外部类的所有成员,包括私有成员。例如上述代码中,
- 作用域:成员内部类的作用域在外部类内部。它不能在外部类之外直接使用,除非通过外部类实例来访问。
- 独立性:成员内部类虽然依赖于外部类实例,但它有自己独立的生命周期,可以有自己的属性和方法,与外部类相互独立又存在关联。
- 静态成员限制:成员内部类不能包含静态成员,除了静态常量(
static final
)。因为成员内部类实例是依赖于外部类实例的,而静态成员是属于类级别的,不依赖于实例,这会导致矛盾。