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
廣告