1. 程式人生 > 其它 >|NO.Z.00075|——————————|BigDataEnd|——|Java&特殊類.V03|------------------------------------------------|Java.v03|普通內部類.v02|使用方式|

|NO.Z.00075|——————————|BigDataEnd|——|Java&特殊類.V03|------------------------------------------------|Java.v03|普通內部類.v02|使用方式|



[BigDataJava:Java&特殊類.V03]                                                                                 [BigDataJava.面向物件] [|章節五|特殊類|普通內部類的使用方式|]








一、普通內部類的使用方式
### --- 普通內部類的使用方式

~~~     ——>        普通內部類和普通類一樣可以定義成員變數、成員方法以及構造方法等。
~~~     ——>        普通內部類和普通類一樣可以使用final或者abstract關鍵字修飾。
~~~     ——>        普通內部類還可以使用private或protected關鍵字進行修飾。
~~~     ——>        普通內部類需要使用外部類物件來建立物件。
~~~     ——>        如果內部類訪問外部類中與本類內部同名的成員變數或方法時,需要使用this關鍵字。
二、普通內部類的使用方式
package com.yanqi.task10;

/**
 * 程式設計實現普通內部類的定義和使用       -  文件註釋
 */
public class NormalOuter {
    private int cnt = 1;

    // 定義普通內部類,隸屬於外部類的成員,並且是物件層級
    /*private*/public /*final*/ class NormalInner {
        private int ia = 2;
        private int cnt = 3;
        public NormalInner() {
            System.out.println("普通內部類的構造方法體執行到了!");
        }

        public void show() {
            System.out.println("外部類中變數cnt的數值為:" + cnt); // 1
            System.out.println("ia = " + ia); // 2
        }

        public void show2(int cnt) {
            System.out.println("形參變數cnt = " + cnt);  // 區域性優先原則  4
            System.out.println("內部類中cnt = " + this.cnt); // 3
            System.out.println("外部類中cnt = " + NormalOuter.this.cnt); // 1
        }
    }
}
三、程式設計程式碼
package com.yanqi.task10;

public class NormalOuterTest {

    public static void main(String[] args) {

        // 1.宣告NormalOuter型別的引用指向該型別的物件
        NormalOuter no = new NormalOuter();
        // 2.宣告NormalOuter類中內部類的引用指向內部類的物件
        NormalOuter.NormalInner ni = no.new NormalInner();
        // 呼叫內部類中的show方法
        ni.show();

        System.out.println("---------------------------------------------");
        ni.show2(4);
    }
}
四、編譯列印
D:\JAVA\jdk-11.0.2\bin\java.exe "-javaagent:D:\IntelliJIDEA\IntelliJ IDEA 2019.3.3\lib\idea_rt.jar=54045:D:\IntelliJIDEA\IntelliJ IDEA 2019.3.3\bin" -Dfile.encoding=UTF-8 -classpath E:\NO.Z.10000——javaproject\NO.H.00001.javase\javase\out\production\javase com.yanqi.task10.NormalOuterTest
普通內部類的構造方法體執行到了!
外部類中變數cnt的數值為:3
ia = 2
---------------------------------------------
形參變數cnt = 4
內部類中cnt = 3
外部類中cnt = 1

Process finished with exit code 0








===============================END===============================


Walter Savage Landor:strove with none,for none was worth my strife.Nature I loved and, next to Nature, Art:I warm'd both hands before the fire of life.It sinks, and I am ready to depart                                                                                                                                                    ——W.S.Landor



來自為知筆記(Wiz)