1.內部類如何做到自動擁有對其外圍類所有成員的訪問權?
當乙個外圍類建立乙個內部類物件時,此內部物件必定會秘密地捕獲乙個指向那個外圍類物件的引用。然後,當你訪問此外圍類的成員時,就是用那個引用來選擇外圍類的成員的。所以,你會發現:內部類的物件只能在其外部類物件相關的情況下被建立(內部類為非static時)。
//迭代器的實現
public
inte***ce
selector
public
class
sequence
public
void
add(object x)
}private
class
sequenceselector
implements
selector
public object current()
public
void
next()
}}
2.使用.this與.new
在擁有外部類物件之前是不可能建立內部類物件的,因為內部類物件會暗暗地鏈結到建立它的外部類物件上。但是如果建立的是靜態內部類,它就不需要對外部類物件的引用。
public
class outer
}public inner inner()
}public
class dotnew
public
static
void
main(string args)
}
3.內部類與向上轉型
當將內部類向上轉型為其基類,尤其是轉型為乙個介面的時候,內部類就有了用武之地。
public
inte***ce
destination
public
inte***ce
contents
class parce
}public
class
pdestination
implements
destination
public string readlable()
public destination destiantion(string s)..}
}public
class
test
}
注:內部類pcontents是private,所以除了parce,沒有人能夠訪問他。pdestination 是protected,所以只有parce以及其子類,還有parce同包中的類可以訪問它。
private 內部類給類的設計者提供一種途徑,通過這種方式可以完全阻止任何依賴於型別的編碼。
4.匿名內部類
public
class
parclea
}public contents contents(int i)
}public
class
paracleb}}
}
注:*在parclea不要求變數i一定是fianl。因為i被傳遞給匿名類的基類的構造器,它並不會再匿名類內部被直接使用。* 內部類(程式設計思想)
內部類 可以將乙個類的定義放在另乙個類的定義內部,這就是內部類。內部類是一種非常有用的特性,因為它允許你把一些邏輯相關的類組織在一起,並控制位於內部的類的可視性。最初,內部類看起來像一種 隱藏機制 將類置於其他類的內部。但是內部類遠不止如此,它了解外圍類,並能與之通訊 而且你用內部類寫出的 更加優雅...
Java程式設計思想 10內部類
內部類 定義在另外乙個類裡面的類 外部類 包含內部類的類 1 內部類可以直接訪問外部類的所有元素。因持有對外部類的引用 外部類類名.this 2 外部類訪問內部類,必須先建立內部類的物件 public class outer public static void main string args 前...
java程式設計思想筆記 內部類部分二
package com.wang.test public class test2 public static void main string args 以上是普通方式。如果內部類test3是乙個靜態類,則其與外圍類其實沒有任何關係,也不能訪問到外圍類的內部成員變數a。但是,如果是乙個靜態內部類,可...