📅  最后修改于: 2023-12-03 14:43:05.037000             🧑  作者: Mango
在Java中,我们可以在一个类中定义另一个类,被定义的类称为嵌套类。嵌套类可以分为静态嵌套类和非静态嵌套类。本文就Java静态和非静态嵌套类的区别进行详细介绍。
静态嵌套类是被静态修饰的嵌套类,它与外部类的实例无关,可以直接通过外部类进行访问。静态嵌套类的特点如下:
下面是一个示例代码片段,展示了静态嵌套类的用法:
public class OuterClass {
private static int outerStaticVar = 10;
private int outerVar = 20;
public static class StaticInnerClass {
private static int innerStaticVar = 30;
private int innerVar = 40;
public void innerMethod() {
// 静态嵌套类可以直接访问外部类的静态成员变量
System.out.println(outerStaticVar);
// 静态嵌套类不能直接访问外部类的非静态成员变量,需要通过外部类的实例访问
OuterClass outer = new OuterClass();
System.out.println(outer.outerVar);
}
}
}
非静态嵌套类,也称为内部类,是不被static修饰的嵌套类。内部类与外部类的实例紧密相关,只能通过外部类的实例进行访问。非静态嵌套类的特点如下:
下面是一个示例代码片段,展示了非静态嵌套类的用法:
public class OuterClass {
private int outerVar = 20;
public class InnerClass {
private int innerVar = 40;
public void innerMethod() {
// 非静态嵌套类可以直接访问外部类的非静态成员变量
System.out.println(outerVar);
// 非静态嵌套类可以直接访问外部类的静态成员变量
System.out.println(outerStaticVar);
}
}
}
静态嵌套类和非静态嵌套类在使用方式和访问权限上有所不同:
根据实际需要,选择适合的嵌套类类型可以更好地组织和管理代码。