黑馬程式設計師 內部類的訪問規則

2021-07-04 04:50:13 字數 2783 閱讀 3346

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培訓 期待與您交流!內部類 將乙個類定義在另乙個類的裡...