麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁(yè) > 開發(fā) > Java > 正文

Java內(nèi)部類原理與用法實(shí)例總結(jié)

2024-07-14 08:42:10
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友

本文實(shí)例講述了Java內(nèi)部類原理與用法。分享給大家供大家參考,具體如下:

一、非靜態(tài)內(nèi)部類

public class OutClass {  private String name = "outclass";  public void show() {    System.out.println(this.name);  }  public void innerShow() {    InnerClass inner = new InnerClass();    inner.show();    inner.outShow();  }  // 非靜態(tài)內(nèi)部類  class InnerClass {    // 2.0非靜態(tài)內(nèi)部類不能有靜態(tài)變量的聲明    // public static int age=0;    private String name = "innerclass";    public void show() {      System.out.println(this.name);    }    public void outShow() {      // 3.0內(nèi)部類做為外部類的實(shí)例成員,可以隨意訪問其他外部類成員      System.out.println(OutClass.this.name);    }  }  public static void main(String[] args) {    OutClass out = new OutClass();    out.show();    out.innerShow();    // 1.0下面一行編譯報(bào)錯(cuò),靜態(tài)方法無(wú)法訪問this指針    // 因?yàn)榈韧趖his.InnerClass inner=new this.InnerClass();    // InnerClass inner=new InnerClass();  }}

運(yùn)行結(jié)果:

outclass
innerclass
outclass

1.外部類不能直接訪問非靜態(tài)內(nèi)部類,必須在外部類中保存內(nèi)部類的引用間接訪問。
2.非靜態(tài)內(nèi)部類中不能有靜態(tài)屬性。

個(gè)人理解:非靜態(tài)內(nèi)部類是外部類的實(shí)例成員,它屬于外部類的實(shí)例對(duì)象所擁有,若內(nèi)部類有靜態(tài)屬性,那么屬性必定屬于內(nèi)部類所有,即所有的內(nèi)部類實(shí)例對(duì)象都共享這個(gè)屬性。但是這個(gè)內(nèi)部類已經(jīng)屬于外部類的實(shí)例對(duì)象所擁有了,貌似是1:1的關(guān)系,除非外部類的對(duì)象保存了n多份內(nèi)部類實(shí)例的引用,那這樣內(nèi)部類的靜態(tài)屬性才有存在的必要,可這么做就沒有什么意義了。

3.非靜態(tài)內(nèi)部類可以隨意訪問外部類的成員,因?yàn)樗鼈兌际峭獠款惖某蓡T,等級(jí)一樣。

4.若要得到內(nèi)部類的實(shí)例,可以

OutClass.InnerClass inner=new OutClass().new InnerClass();

二、靜態(tài)內(nèi)部類

public class OutClass {  private String name = "outclass";  private static int age = 10;  // 靜態(tài)內(nèi)部類  static class InnerClass {    public void show() {      // 1.0      System.out.println(new OutClass().name);    }    public void outShow() {      // 2.0      System.out.println(age);    }  }  public static void main(String[] args) {    // 3.0    OutClass.InnerClass inner = new OutClass.InnerClass();    inner.outShow();    inner.show();  }}

運(yùn)行結(jié)果:

10
outclass

1.靜態(tài)內(nèi)部類不能隨意訪問外部類的實(shí)例成員,必須引用外部類的對(duì)象。
2.靜態(tài)內(nèi)部類可以隨意訪問外部類的類成員。
3.若要獲取靜態(tài)內(nèi)部類的實(shí)例,則形式如

OutClass.InnerClass inner=new OutClass.InnerClass();

注意與非靜態(tài)內(nèi)部類獲取實(shí)例的區(qū)別:

OutClass.InnerClass inner=new OutClass().new InnerClass();

三、局部類

1.匿名內(nèi)部類

interface IDraw {  void draw();}public class OutClass {  public void createCircle(IDraw obj) {    obj.draw();  }  public static void main(String[] args) {    OutClass out = new OutClass();    out.createCircle(new IDraw() {      public void draw() {        System.out.println("i'm drawing...");      }    });  }}

運(yùn)行結(jié)果:

i'm drawing...

在調(diào)用多態(tài)形式的方法createCircle(IDraw obj)時(shí),參數(shù)用到了new IDraw(){ },做為接口來(lái)說(shuō)是不能直接實(shí)例化的,這里的new IDraw()并不是直接實(shí)例化,而是創(chuàng)建了匿名內(nèi)部類。

2.閉包與回調(diào)

interface IDraw {  void draw();}public class OutClass {  private String name = "private name";  public Closure getClosure() {    return new Closure();  }  class Closure implements IDraw {    public void draw() {      System.out.println(OutClass.this.name);// name    }  }  public static void main(String[] args) {    OutClass out = new OutClass();    out.getClosure().draw();  }}

運(yùn)行結(jié)果:

private name

內(nèi)部類可以像其他類一樣靈活的實(shí)現(xiàn)各種接口和繼承,并且可以將外部類的屬性和方法綁定到自身中,形成閉包。而在外部類中提供了方法供外界獲取內(nèi)部類的引用,因?yàn)閮?nèi)部類的方法靈活的訪問了外部類的許多信息,甚至是私有信息,獲得了這個(gè)對(duì)象后可以反過來(lái)調(diào)用外部類的方法和函數(shù)形成回調(diào)。

其實(shí)上面只是有閉包的形式,并不算是真正的閉包,閉包的定義里主要是綁定方法里的變量,但是java是無(wú)法實(shí)現(xiàn)方法里的內(nèi)部類還能訪問方法變量的,因?yàn)闊o(wú)法實(shí)現(xiàn)真正的閉包。

希望本文所述對(duì)大家java程序設(shè)計(jì)有所幫助。


注:相關(guān)教程知識(shí)閱讀請(qǐng)移步到JAVA教程頻道。
發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 成人午夜激情视频 | 成人毛片av在线 | 黄色av片在线观看 | 久久人添人人爽人人爽人人片av | 午夜国产在线 | 久在线播放 | 性爱视频在线免费 | 草草久| 女人叉开腿让男人桶 | 成人精品一区二区 | 中文字幕在线观看精品 | 娇妻被各种姿势c到高潮小说 | 视频在线中文字幕 | 97黄色网| 国产精品久久久久久久四虎电影 | 少妇一级淫片免费看 | 福利免费在线 | 国产69精品久久99不卡免费版 | 亚洲国产馆 | 日韩视频一二三 | 黄色羞羞视频在线观看 | 毛片免费网 | 久久最新网址 | 欧美一级毛片欧美一级成人毛片 | 久久久久一区 | 99国产精品欲a | 暴力肉体进入hdxxxx0 | 国产一级一片免费播放 | 欧美 videos粗暴 | 在线免费日韩 | 国产午夜精品一区二区三区不卡 | 国产精品一区二区三区在线看 | 国产88久久久国产精品免费二区 | 毛片大全免费看 | 日本免费不卡一区二区 | 国产精品国产三级国产在线观看 | 国产精品免费视频观看 | 免费一级毛片在线播放视频 | 久久生活片 | 8x成人在线电影 | 国产精品6区 |