第三次学JAVA再学不好就吃翔(part42)--内部类概述
生活随笔
收集整理的這篇文章主要介紹了
第三次学JAVA再学不好就吃翔(part42)--内部类概述
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
學習筆記,僅供參考
文章目錄
- 面向對象
- 內部類
- 內部類概述和訪問特點
- 成員內部類私有使用
- 靜態成員內部內
面向對象
內部類
內部類概述和訪問特點
- 內部類概述
- 在類中定義類,就叫做內部類
- 內部類訪問特點
- 內部類可以直接訪問外部類的成員,包括私有成員。
- 外部類要訪問內部類的成員,必須創建對象。
- 創建內部類對象的格式:外部類名.內部類名 對象名 = 外部類對象.內部類對象;
- 舉個例子
輸出:
Inner print 10成員內部類私有使用
當我們把內部類私有后,我們就不可以通過上面的方式去創建內部類的對象了:
class InnerTest1 {public static void main(String[] args) {Outer.Inner oi = new Outer().new Inner();//創建內部類對象oi.print();} }class Outer {private int num = 10;private class Inner {public void print() {System.out.println("Inner print");System.out.println(num);}} }報錯:
---------- javac ---------- InnerTest1.java:3: 錯誤: Outer.Inner可以在Outer中訪問privateOuter.Inner oi = new Outer().new Inner();^ InnerTest1.java:3: 錯誤: Outer.Inner可以在Outer中訪問privateOuter.Inner oi = new Outer().new Inner();^ 2 個錯誤Output completed (2 sec consumed) - Normal Termination這時,為了訪問Inner內部類的成員,我們可以通過在Outer類中創建方法來實現:
class InnerTest1 {public static void main(String[] args) {Outer o = new Outer();//創建內部類對象o.method();} }class Outer {private int num = 10;private class Inner {public void print() {System.out.println("Inner print");System.out.println(num);}}public void method() {Inner i = new Inner();i.print();} }輸出:
Inner print 10靜態成員內部內
為了訪問Outer類中的靜態內部類Inner,我們可以寫如下代碼:
class InnerTest1 {public static void main(String[] args) {Outer.Inner oi = new Outer.Inner();oi.print();} }class Outer {static class Inner {public void print() {System.out.println("Inner print");}} }輸出:
Inner print可以看到,我們在創建內部類Inner對象的時候寫的是new Outer.Inner(),這樣寫可能不太好理解,如果我們這樣寫Outer.new Inner(),是不是能夠更好的理解呢?
因為Inner是靜態的,所以我們可以用Outer直接調用(Outer.),又因為Inner有非靜態的方法(print()),我們需要通過Inner的對象才能調用該方法,所以我們需要創建其對象(new Inner())。
雖然這樣的寫法比較好理解,但是JAVA不允許我們這樣書寫,如果這樣寫了,編譯時就會報錯!
總結
以上是生活随笔為你收集整理的第三次学JAVA再学不好就吃翔(part42)--内部类概述的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 小米13 Pro被低估了!雷军力荐:数码
- 下一篇: 第三次学JAVA再学不好就吃翔(part