java內部類實例
⑴ java 匿名內部類 的執行順序和文字表述, ,下面看代碼
內部類(理解)
(1)把類定義在另一個類的內部,該類就被稱為內部類。
舉例:把類B定義在類A中,類B就被稱為內部類。
(2)內部類的訪問規則
A:可以直接訪問外部類的成員,包括私有
B:外部類要想訪問內部類成員,必須創建對象
(3)內部類的分類
A:成員內部類
B:局部內部類
(4)成員內部類
A:private 為了數據的安全性
B:static 為了訪問的方便性
成員內部類不是靜態的:
外部類名.內部類名 對象名 = new 外部類名.new 內部類名();
成員內部類是靜態的:
外部類名.內部類名 對象名 = new 外部類名.內部類名();
局部內部類
A:局部內部類訪問局部變數必須加final修飾。
B:為什麼呢?
因為局部變數使用完畢就消失,而堆內存的數據並不會立即消失。
所以,堆內存還是用該變數,而改變數已經沒有了。
為了讓該值還存在,就加final修飾。
通過反編譯工具我們看到了,加入final後,堆內存直接存儲的是值,而不是變數名。
(7)匿名內部類(掌握)
A:是局部內部類的簡化形式
B:前提
存在一個類或者介面
C:格式:
new 類名或者介面名() {
重寫方法;
}
D:本質:
其實是繼承該類或者實現介面的子類匿名對象
(8)匿名內部類在開發中的使用
我們在開發的時候,會看到抽象類,或者介面作為參數。
而這個時候,我們知道實際需要的是一個子類對象。
如果該方法僅僅調用一次,我們就可以使用匿名內部類的格式簡化。
⑵ java 有沒有 私有類
java中有私有內部類,即在一個普通Java類里創建一個private的class。
用途:如果一個內部類只希望被外部類中的方法操作,那麼可以使用private聲明內部類,訪問時必須在Out類裡面生成In類的對象進行操作,此時的內部類只有外部類可控制。
私有內部類舉例:
classOut{
privateintage=12;
privateclassIn{
publicvoidprint(){
System.out.println(age);
}
}
publicvoidoutPrint(){
newIn().print();
}
}
publicclassDemo{
publicstaticvoidmain(String[]args){
//此方法無效
/*
Out.Inin=newOut().newIn();
in.print();
*/
Outout=newOut();
out.outPrint();
}
}
