JAVA成員內部類

成員內部類可以看作是外部類的非靜態成員的內部類。內部類和外部類的其他成員是同一級別的,也是外部類的一個成員。

 package JAVA_Project_01_05;

//成員內部類可以看作是外部類的非靜態成員的內部類。內部類和外部類的其他成員是同一級別的,也是外部類的一個成員。

//使用成員內部類的技術要點如下:
//
//· 成員內部類的語法格式:class外部類名{(public/private/protected)class內部類名{}...}。在成員內部類中,可以擁有自己的成員變量和方法,是一個獨立的類,內部類和外部類的實例變量是可以共存的。
//
//· 成員內部類可以訪問外部類的私有成員或屬性。即使將外部類聲明爲private,成員內部類依然是可見的。
//
//· 內部類和外部類在編譯時是兩個不同的類,內部類對外部類沒有任何依賴。成員內部類一旦編譯成功,就會成爲與外部類完全不同的類。

class OuterClass {

    String outer = "outer class";

    private int number = 1;

    private static int count = 10;

    public OuterClass() {
    }//默認構造方法

    public OuterClass(int number, int count) {//帶參數的構造方法

        this.number = number;

        this.count = count;

        System.out.println("傳入的數分別爲:" + this.number + "與" + this.count);

    }

    private void outer_1() {//外部類非靜態方法

        System.out.println("調用外部類的非靜態方法");

        InnerClass inner = this.new InnerClass();

    }

    private static void outer_2() {//外部類的靜態方法

        System.out.println("調用外部類的靜態方法");

        //InnerClass inner=this.new InnerClass();

    }

    class InnerClass {//定義成員內部類

        String outer = "innerclass";

        public InnerClass() {//默認構造方法

            System.out.println("成員內部類的構造方法");

        }

        protected void communicate() {//交流的方法

            System.out.println("外部類的字符串:" + OuterClass.this.outer);

            System.out.println("內部類的字符串:" + this.outer);

        }

        protected void inner_1() {//成員內部類的非靜態方法

            System.out.println("調用外部類的私有方法");

            outer_1();

            outer_2();

        }

    }

}

public class TextMemberInnerClass {//操作成員內部類的類

    public static void main(String[] args) {//Java程序主入口處

        OuterClass outer = new OuterClass(10,20);//實例化對象

        OuterClass.InnerClass inner = outer.new InnerClass();//實例化成員內部類

        System.out.println("OuterClass=" + outer.outer);

        System.out.println("InnerClass=" + inner.outer);

        inner.communicate();//調用方法

        inner.inner_1();//調用方法

    }

}

/*
(1)程序中定義外部類及其內部的成員變量和方法以及成員內部類。OuterClass類中的非靜態方法outer_1()可以實例化InnerClass成員內部類,
但非靜態方法不能實例化成員內部類。在成員內部類InnerClass中communicate()方法可以訪問外部類的靜態變量或靜態方法,
語法格式爲:“外部類名.this.屬性(或方法())”。inner_1()方法可以調用外部類的私有方法。

(2)在main()主方法中要實例化成員內部類,需要先實例化外部類。語法格式:Outer o=newOuter();Outer.Innerin=o.new.Inner()。
*/
發佈了71 篇原創文章 · 獲贊 12 · 訪問量 4541
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章