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

更新於: 2019年7月30日

865 次瀏覽

開啟你的 職業生涯

透過完成課程獲得認證

開始學習
廣告