1. 程式人生 > 其它 >|NO.Z.00077|——————————|BigDataEnd|——|Java&特殊類.V05|------------------------------------------------|Java.v05|靜態內部類.v02|使用方式|

|NO.Z.00077|——————————|BigDataEnd|——|Java&特殊類.V05|------------------------------------------------|Java.v05|靜態內部類.v02|使用方式|



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








一、靜態內部類的使用方式
### --- 靜態內部類的使用方式

~~~     ——>        靜態內部類不能直接訪問外部類的非靜態成員。
~~~     ——>        靜態內部類可以直接建立物件。
~~~     ——>        如果靜態內部類訪問外部類中與本類內同名的成員變數或方法時,
~~~     ——>        需要使用類名.的方式訪問。
二、程式設計程式碼
package com.yanqi.task10;

/**
 * 實現靜態內部類的定義和使用
 */
public class StaticOuter {
    private int cnt = 1;        // 隸屬於物件層級
    private static int snt = 2; // 隸屬於類層級

    public /*static*/ void show() {
        System.out.println("外部類的show方法就是這裡!");
    }

    /**
     * 定義靜態內部類   有static關鍵字修飾隸屬於類層級
     */
    public static class StaticInner {
        private int ia = 3;
        private static int snt = 4;

        public StaticInner() {
            System.out.println("靜態內部類的構造方法哦!");
        }

        public void show() {
            System.out.println("ia = " + ia); // 3
            System.out.println("外部類中的snt = " + snt); // 2
            //System.out.println("外部類的cnt = " + cnt); // Error:靜態上下文中不能訪問非靜態的成員,因此此時可能還沒有建立物件
        }

        public void show2(int snt) {  // 就近原則
            System.out.println("snt = " + snt); // 5
            System.out.println("內部類中的成員snt = " + StaticInner.snt); // 4
            System.out.println("外部類中的成員snt = " + StaticOuter.snt); // 2
            //StaticOuter.show();
            new StaticOuter().show();
        }
    }
}
三、程式設計程式碼
package com.yanqi.task10;

public class StaticOuterTest {

    public static void main(String[] args) {

        // 1.宣告StaticInner型別的引用指向該型別的物件
        StaticOuter.StaticInner si = new StaticOuter.StaticInner();
        // 2.呼叫show方法進行測試
        si.show();

        System.out.println("---------------------------------------------");
        si.show2(5);
    }
}
四、編譯列印
D:\JAVA\jdk-11.0.2\bin\java.exe "-javaagent:D:\IntelliJIDEA\IntelliJ IDEA 2019.3.3\lib\idea_rt.jar=54119: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.StaticOuterTest
靜態內部類的構造方法哦!
ia = 3
外部類中的snt = 4
---------------------------------------------
snt = 5
內部類中的成員snt = 4
外部類中的成員snt = 2
外部類的show方法就是這裡!

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)