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
廣告
資料結構
網路
關係型資料庫管理系統
作業系統
Java
iOS
HTML
CSS
Android
Python
C 程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP