java 巢狀類
阿新 • • 發佈:2019-01-06
如果不需要內部類物件與其外圍類物件之間有聯絡,那麼可以將內部類宣告為static,這通常稱為巢狀類,想要理解static應用於內部類時的含義,就必須記住,普通的內部類物件隱式地儲存了一個引用,指向它的外圍類物件,然而,當內部類時static時,就不是這樣了,巢狀類意味著:
1)要建立巢狀類的物件,並不需要其外圍類的物件
2)不能從巢狀類的物件中訪問非靜態的外圍類物件
巢狀類與普通的內部類還有一個區別,普通內部類的欄位與方法,只能放在類的外部層次上,所以普通的內部類不能有static資料和static欄位,也不能包含巢狀類,但是巢狀類可以包含這些東西:
//: innerclasses/Parcel11.java// Nested classes (static inner classes). package object; public class Parcel11 { private static class ParcelContents implements Contents { private int i = 11; public int value() { return i; } } protected static class ParcelDestination implements Destination { private String label;private ParcelDestination(String whereTo) { label = whereTo; } public String readLabel() { return label; } // Nested classes can contain other static elements: public static void f() {} static int x = 10; static class AnotherLevel { public static void f() {}static int x = 10; } } public static Destination destination(String s) { return new ParcelDestination(s); } public static Contents contents() { return new ParcelContents(); } public static void main(String[] args) { Contents c = contents(); Destination d = destination("Tasmania"); } } ///:~