天天看點

Java内部類的一些筆記(三)

  • 可以将一個類的定義放在另一個類的定義内部,這就是内部類。内部類與組合是完全不同的概念。内部類擁有對其外部類所有成員的通路權,使用.this進行外部類的引用,使用.new與外部類的引用進行内部類的建立。
  • 内部類有幾種寫法,一種是類似類方法一樣的平凡内部類,一種是可以在方法裡面或者在任意作用域内定義的内部類,一種是匿名内部類。匿名内部類如果希望使用一個在其外部定義的對象,那麼編譯器會要求這個參數引用是final的。還一種是嵌套類,即将内部類聲明為static,嵌套類沒有特殊的this引用。
  • 使用内部類的原因是,每個内部類都能獨立的繼承自一個(接口的)實作,是以無論外圍類是否已經繼承了某個(接口的)實作,對于内部類都沒有影響。内部類提供可以繼承多個具體的或抽象的類的能力,使得多重繼承的解決方案變得完整。接口解決了部分問題,而内部類有效的實作了“多重繼承”。
  • 鈎子和回調的了解,鈎子是多态的一種展現,對方提供接口方法,具體鈎的東西由用戶端提供。回調是指預留給系統調用的函數,而我們知道系統具體在什麼時刻進行調用。這個概念在内部類得到充分展現。