1.內部類可以直接訪問外部類中的成員,包括私有
原因:因為在內部類中持有乙個外部類的應用,格式:外部類.this
1. class outer
11. }
12.
13. }
14.
2.外部類要訪問內部類,必須建立內部類物件
a.從外部類的非靜態方法中訪問內部類
1. class outer
7. class inner
11. }
12. }
13.
b、從外部類的靜態方法中訪問內部類
2. class outer
8. }
9. public static void seeinner()
14. }
15. c、在外部其它類中訪問內部類
16. class outer
22. }
23. }
24. public class touter
29.
30. }
31.
對比:在外部類的非靜態方法中訪問內部類:inner in = new inner();
在外部類的靜態方法中訪問內部類:outer.inner in = new outer().new inner();
在外部其他類中訪問內部類:outer.inner in = new outer().new inner();
3.當內部類在成員位置上,就可以被成員修飾符修飾
3.1當內部類被static修飾後,就只能訪問外部類中的static成員,出現訪問侷限
1. class outer
7. }
8. }
9.
3.2在外部其他類中,如何訪問static內部類的非靜態成員呢?
new outer.inner().seeouter();
理由:因為外部內一旦被載入,靜態內部類也被載入了,所以直接建立內部類物件呼叫方法即可
1. class outer
7. }
8. }
9. public class test
13. }
3.3在外部其他類中,如何訪問static內部類的靜態成員呢?
1. outer.inner.seeouter();
2. class outer
8. }
9. }
10. public class test
14. }
15.
3.4.當內部類中定義了靜態成員,該內部類必須是靜態的
1. class outer
8. }
9. }
10.
3.5.當內部類中的靜態方法訪問內部類時,內部類也必須是靜態的(參考上面2中b位置1處)
4.方法內部類(區域性內部類)
把類放在方法內
1. class outer
6. }
7. }
8. }
9.
4.1、方法內部類只能在定義該內部類的方法內例項化,不可以在此方法外對其實例化
4.2、方法內部類物件不能訪問該內部類所在方法的非final區域性變數
1. class outer
10. }
11. inner in = new inner();
12. in.seeouter(); //只能在方法內部訪問內部類
13. }
14. public static void main(string args)
18. }
19.
4.3、方法內部類的修飾符
與成員內部類不同,方法內部類更像乙個區域性變數
可以用於修飾方法內部類的只有final和abstract
4.4、靜態方法內的方法內部類
靜態方法是沒有this引用的,因此在靜態方法內的內部類遭受同樣的待遇,即:只能訪問外部類的靜態成員
5.匿名內部類
匿名內部類就是內部類的簡寫格式
定義匿名內部類的前提:內部類必須繼承乙個類或實現介面
匿名內部類就是乙個匿名子類物件
格式:new 父類或者介面()
黑馬程式設計師 內部類
windows phone 7手機開發 net培訓 期待與您交流!什麼是內部類呢?將乙個類定義在另乙個類的裡面,對裡面那個類就稱為內部類 內建類 巢狀類 內部類的訪問特點有哪些呢?內部類可以直接訪問外部類中的成員,包括私有成員 而外部類要訪問內部類中的成員必須要建立內部類的物件。內部類有什麼作用呢?...
黑馬程式設計師 內部類
asp.net android io開發s net培訓 期待與您交流!內部類即在乙個外部類的內部再定義乙個類。內部類作為外部類的乙個成員,且依附於外部類而存在。內部類的訪問規則 1 內部類可以直接訪問外部類中的成員,包括私有。2 外部類需要訪問內部類時,必須建立內部類物件。訪問格式 外部類名.內部類...
黑馬程式設計師 內部類
asp.net android ios rel noopener noreferrer target blank asp.net android ios開發 net rel noopener noreferrer target blank net培訓 期待與您交流!內部類 將乙個類定義在另乙個類的裡...