內部類:java
(注:全部使用內部類的地方均可以不用內部類,使用內部類能夠使程序更加的簡潔,便於命名規範和劃分層次結構)。this
內部類是指在一個外部類的內部再定義一個類。編譯
內部類做爲外部類的一個成員,而且依附於外部類而存在的。class
內部類可爲靜態,可用PROTECTED和PRIVATE修飾。(而外部類不能夠:外部類只能使用PUBLIC和DEFAULT)。變量
內部類的分類:權限
成員內部類、程序
局部內部類、方法
靜態內部類、命名
匿名內部類(圖形是要用到,必須掌握)。命名規範
① 成員內部類:做爲外部類的一個成員存在,與外部類的屬性、方法並列。
內部類和外部類的實例變量能夠共存。
在內部類中訪問實例變量:this.屬性
在內部類訪問外部類的實例變量:外部類名.this.屬性。
成員內部類的優勢:
⑴內部類做爲外部類的成員,能夠訪問外部類的私有成員或屬性。(即便將外部類聲明爲PRIVATE,可是對於處於其內部的內部類仍是可見的。)
⑵用內部類定義在外部類中不可訪問的屬性。這樣就在外部類中實現了比外部類的private還要小的訪問權限。
注意:內部類是一個編譯時的概念,一旦編譯成功,就會成爲徹底不一樣的兩類。
對於一個名爲outer的外部類和其內部定義的名爲inner的內部類。編譯完成後出現outer.class和outer$inner.class兩類。
(編寫一個程序檢驗:在一個TestOuter.java程序中驗證內部類在編譯完成以後,會出現幾個class.)