Java 内部类和内部静态类:区别、定义及使用
内部类和内部静态类是 Java 中两种不同的类定义方式,它们有以下区别:
-
内部类(Inner Class):
- 内部类是定义在另一个类内部的类,可以直接访问外部类的成员(包括私有成员)。
- 内部类可以分为成员内部类、局部内部类和匿名内部类三种类型。
- 成员内部类可以访问外部类的所有成员,包括实例变量和静态变量。
- 内部类的实例化需要先实例化外部类,然后通过外部类的实例来创建内部类的对象。
-
内部静态类(Static Inner Class):
- 内部静态类是定义在另一个类内部的静态类,与外部类的实例无关。
- 内部静态类可以访问外部类的静态成员,但不能访问外部类的实例变量。
- 内部静态类的实例化可以直接通过类名创建,不需要先实例化外部类。
下面是一个示例代码,展示了内部类和内部静态类的定义和使用方式:
public class OuterClass {
private int outerVariable;
// 成员内部类
class InnerClass {
private int innerVariable;
public void accessOuterVariable() {
outerVariable = 10;
}
}
// 内部静态类
static class StaticInnerClass {
private static int staticInnerVariable;
public void accessStaticOuterVariable() {
staticInnerVariable = 20;
}
}
public static void main(String[] args) {
OuterClass outer = new OuterClass();
// 使用成员内部类
InnerClass inner = outer.new InnerClass();
inner.accessOuterVariable();
// 使用内部静态类
StaticInnerClass staticInner = new StaticInnerClass();
staticInner.accessStaticOuterVariable();
}
}
在上述示例中,OuterClass 是外部类,它包含了一个成员内部类 InnerClass 和一个内部静态类 StaticInnerClass。
通过成员内部类,可以使用外部类的实例 outer 来创建内部类的对象,并访问外部类的实例变量 outerVariable。
通过内部静态类,可以直接创建静态内部类的对象,并访问外部类的静态成员变量 staticInnerVariable。
总结起来,内部类是依赖于外部类实例存在的,可以访问外部类的所有成员,而内部静态类是独立于外部类的,只能访问外部类的静态成员。使用内部类和内部静态类可以提供更灵活的类定义方式和更好的封装性。
原文地址: https://www.cveoy.top/t/topic/jNE 著作权归作者所有。请勿转载和采集!