Java 中定义了哪些不同类型的嵌套类?
在 Java 中,可以在一个类内部定义另一个类,这样的类称为**嵌套类**。我们可以使用像**private、public、protected 或 default**这样的访问修饰符来修饰**内部类**,并使用**default 或 public**访问修饰符来修饰**外部类**。
Java 中定义了两种类型的**嵌套类**。
- 静态嵌套类
- 非静态嵌套类
静态嵌套类
- 我们可以将内部类定义为静态的,因此这种类型的类称为**静态嵌套类**。
- **嵌套类**使用**static 关键字**定义,因此这种类型的嵌套类与**外部类**的实例之间没有任何关系。
- **静态嵌套类**可以访问类的**静态成员**。
示例
class Car { static class Wheel { public void rotate() { System.out.println("The wheel is rotating"); } } } public class Test { public static void main(String args[]) { Car.Wheel wheel = new Car.Wheel(); wheel.rotate(); } }
输出
The wheel is rotating
非静态嵌套类
- **非静态嵌套类**在 Java 中也被称为**内部类**。
- **内部类**与**外部类的对象**相关联。因此,内部类被视为外部类的其他变量和方法。
- **内部类**与外部类对象或实例相关联,因此我们**不能在内部类中声明静态变量**。
示例
public class OuterClassTest { private int a = 10; public void innerClassInstance() { InnerClassTest inner = new InnerClassTest(); inner.outerObject(); } public static void main(String args[]) { OuterClassTest outer = new OuterClassTest(); outer.innerClassInstance(); } class InnerClassTest { public void outerObject() { System.out.println("Outer Value of a is: " + a); } } }
输出
Outer Value of a is: 10
广告