亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > Java > 正文

java中的內部類詳細總結

2019-11-26 15:56:15
字體:
來源:轉載
供稿:網友

內部類不是很好理解,但說白了其實也就是一個類中還包含著另外一個類

如同一個人是由大腦、肢體、器官等身體結果組成,而內部類相當于其中的某個器官之一,例如心臟:它也有自己的屬性和行為(血液、跳動)

顯然,此處不能單方面用屬性或者方法表示一個心臟,而需要一個類

而心臟又在人體當中,正如同是內部類在外部內當中

實例1:內部類的基本結構

復制代碼 代碼如下:

//外部類
class Out {
    private int age = 12;

    //內部類
    class In {
        public void print() {
            System.out.println(age);
        }
    }
}

public class Demo {
    public static void main(String[] args) {
        Out.In in = new Out().new In();
        in.print();
        //或者采用下種方式訪問
        /*
        Out out = new Out();
        Out.In in = out.new In();
        in.print();
        */
    }
}

運行結果:12

從上面的例子不難看出,內部類其實嚴重破壞了良好的代碼結構,但為什么還要使用內部類呢?

因為內部類可以隨意使用外部類的成員變量(包括私有)而不用生成外部類的對象,這也是內部類的唯一優點

如同心臟可以直接訪問身體的血液,而不是通過醫生來抽血

程序編譯過后會產生兩個.class文件,分別是Out.class和Out$In.class

其中$代表了上面程序中Out.In中的那個 .

Out.In in = new Out().new In()可以用來生成內部類的對象,這種方法存在兩個小知識點需要注意

1.開頭的Out是為了標明需要生成的內部類對象在哪個外部類當中

2.必須先有外部類的對象才能生成內部類的對象,因為內部類的作用就是為了訪問外部類中的成員變量

實例2:內部類中的變量訪問形式

復制代碼 代碼如下:

class Out {
    private int age = 12;

    class In {
        private int age = 13;
        public void print() {
            int age = 14;
            System.out.println("局部變量:" + age);
            System.out.println("內部類變量:" + this.age);
            System.out.println("外部類變量:" + Out.this.age);
        }
    }
}

public class Demo {
    public static void main(String[] args) {
        Out.In in = new Out().new In();
        in.print();
    }
}

運行結果:

局部變量:14
內部類變量:13
外部類變量:12

從實例1中可以發現,內部類在沒有同名成員變量和局部變量的情況下,內部類會直接訪問外部類的成員變量,而無需指定Out.this.屬性名

否則,內部類中的局部變量會覆蓋外部類的成員變量

而訪問內部類本身的成員變量可用this.屬性名,訪問外部類的成員變量需要使用Out.this.屬性名

實例3:靜態內部類

復制代碼 代碼如下:

 class Out {
    private static int age = 12;

    static class In {
        public void print() {
            System.out.println(age);
        }
    }
}

public class Demo {
    public static void main(String[] args) {
        Out.In in = new Out.In();
        in.print();
    }
}

運行結果:12

可以看到,如果用static 將內部內靜態化,那么內部類就只能訪問外部類的靜態成員變量,具有局限性

其次,因為內部類被靜態化,因此Out.In可以當做一個整體看,可以直接new 出內部類的對象(通過類名訪問static,生不生成外部類對象都沒關系)

實例4:私有內部類

復制代碼 代碼如下:

 class Out {
    private int age = 12;

    private class In {
        public void print() {
            System.out.println(age);
        }
    }
    public void outPrint() {
        new In().print();
    }
}

public class Demo {
    public static void main(String[] args) {
        //此方法無效
        /*
        Out.In in = new Out().new In();
        in.print();
        */
        Out out = new Out();
        out.outPrint();
    }
}

運行結果:12

如果一個內部類只希望被外部類中的方法操作,那么可以使用private聲明內部類

上面的代碼中,我們必須在Out類里面生成In類的對象進行操作,而無法再使用Out.In in = new Out().new In() 生成內部類的對象

也就是說,此時的內部類只有外部類可控制

如同是,我的心臟只能由我的身體控制,其他人無法直接訪問它

實例5:方法內部類

復制代碼 代碼如下:

 class Out {
    private int age = 12;

    public void Print(final int x) {
        class In {
            public void inPrint() {
                System.out.println(x);
                System.out.println(age);
            }
        }
        new In().inPrint();
    }
}

public class Demo {
    public static void main(String[] args) {
        Out out = new Out();
        out.Print(3);
    }
}

運行結果:
3
12

在上面的代碼中,我們將內部類移到了外部類的方法中,然后在外部類的方法中再生成一個內部類對象去調用內部類方法

如果此時我們需要往外部類的方法中傳入參數,那么外部類的方法形參必須使用final定義

至于final在這里并沒有特殊含義,只是一種表示形式而已

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
亚洲午夜色婷婷在线| 亚洲在线观看视频| 91经典在线视频| 一区二区亚洲欧洲国产日韩| 国产成人精品免费视频| 精品高清一区二区三区| 成人写真福利网| 国模视频一区二区| 亚洲国产精品女人久久久| 欧美成人免费小视频| 精品无人区太爽高潮在线播放| 亚洲区bt下载| 一区二区欧美亚洲| 国产亚洲aⅴaaaaaa毛片| 韩国19禁主播vip福利视频| 精品国产户外野外| 国产欧美日韩免费看aⅴ视频| 国产精品一区二区久久久| 国产精品一区二区三区成人| 久久免费福利视频| 91九色国产社区在线观看| 国产亚洲激情在线| 亚洲一区二区三| 欧美性受xxxx白人性爽| 性色av一区二区三区在线观看| 日韩视频在线观看免费| 久久影院资源站| 色av中文字幕一区| 亚洲图片欧美午夜| 精品亚洲夜色av98在线观看| 国产精品亚洲美女av网站| 亚洲色图美腿丝袜| 久久综合色88| 国产精品高潮呻吟久久av野狼| 一区二区成人精品| 亚洲精品久久久久中文字幕二区| 亚洲人永久免费| 欧洲日本亚洲国产区| 欧美一性一乱一交一视频| 欧美交受高潮1| 欧美日韩久久久久| 亚洲高清久久网| 亚洲福利视频网| 一个人看的www欧美| 亚洲第一网站男人都懂| 国产剧情日韩欧美| 中文字幕成人在线| 日韩中文字幕视频| 国产精品久久久久久久久免费| 欧美孕妇与黑人孕交| 亚洲va欧美va国产综合剧情| 亚洲综合中文字幕在线观看| 亚洲一区二区三区四区在线播放| 亚洲天堂成人在线| 国产精品久久久久久久久免费看| 欧美性在线视频| 一区二区在线免费视频| 色综合伊人色综合网站| 日韩精品亚洲精品| 日韩在线免费高清视频| 国产亚洲一区精品| 久久五月天色综合| 国产欧美日韩精品在线观看| 国产99在线|中文| 亚洲精品在线观看www| 国产成人精品在线| 亚洲国产精品va在线看黑人| 精品国产福利在线| 在线观看欧美www| 国产精品伦子伦免费视频| 亚洲国产精品999| 欧美噜噜久久久xxx| 日韩视频永久免费观看| 久久精品视频一| 日本精品视频在线| 国产日本欧美一区二区三区在线| 午夜精品99久久免费| 亚洲精品成人久久电影| 久久精品国产一区二区电影| 日韩在线不卡视频| 亚洲国产一区二区三区四区| 在线国产精品播放| 2019国产精品自在线拍国产不卡| 久久久久在线观看| 亚洲夜晚福利在线观看| 亚洲国产婷婷香蕉久久久久久| 国产精品99久久久久久www| 精品国产31久久久久久| 欧美亚洲午夜视频在线观看| 97视频人免费观看| 98精品国产高清在线xxxx天堂| 精品一区二区亚洲| 国内精品久久久久久中文字幕| 日韩欧美中文在线| 亚洲风情亚aⅴ在线发布| 97精品久久久| 国产亚洲综合久久| 亚洲男子天堂网| 久久精品一本久久99精品| 欧美国产日本高清在线| 国产亚洲欧洲在线| 日韩精品免费在线播放| 欧美超级免费视 在线| 欧洲中文字幕国产精品| 欧美成人免费播放| 国产午夜一区二区| 亚洲一区国产精品| 欧美激情视频一区二区三区不卡| 国产精品国产福利国产秒拍| 亚洲电影中文字幕| 欧美乱妇40p| 成人黄色在线免费| 91在线视频导航| 久精品免费视频| 国产免费一区视频观看免费| 欧美性开放视频| 在线播放国产一区二区三区| 欧美在线视频a| 亚洲女人被黑人巨大进入| 中日韩美女免费视频网站在线观看| 国产精品成人一区| 国产成人精品国内自产拍免费看| 精品成人在线视频| 成人福利免费观看| 激情久久av一区av二区av三区| 欧美激情视频在线观看| 久久精视频免费在线久久完整在线看| 日韩欧美一区视频| 奇米成人av国产一区二区三区| 国产精品jvid在线观看蜜臀| 日韩精品在线观看网站| 欧美极度另类性三渗透| 亚洲成人免费在线视频| 日韩电视剧免费观看网站| 国产一区深夜福利| 欧美专区第一页| 91精品国产高清久久久久久91| 亚洲欧美日韩另类| 久久久免费精品| 久久久久久国产精品久久| 国产精品88a∨| 国产福利成人在线| 欧美激情三级免费| 超碰97人人做人人爱少妇| 日韩av网站电影| 中文欧美在线视频| 日本欧美国产在线| 最近2019年好看中文字幕视频| 日韩av在线天堂网| 国产成人午夜视频网址| 岛国av一区二区在线在线观看| 精品国偷自产在线视频| 欧美精品生活片| 69av在线视频| 久久夜精品香蕉| 亚洲一二在线观看| 国外成人性视频| 日韩成人av网址| 7777免费精品视频| 久久久精品一区二区三区| 国产亚洲精品美女久久久久| 在线观看91久久久久久| 精品国产网站地址| 91影院在线免费观看视频|