国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Java > 正文

java 內部類(匿名類,匿名對象,靜態內部類)詳解及實例

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

內部類的介紹

定義在另外一個類中的類,叫內部類

成員內部類

1..new 創建成員內部類必須先創建外部類的實例,然后通過.new 創建內部類的對象

2..this 可以通過外部類的類名.this去訪問外部類的所有屬性和方法。

public class Test1 {  String name = "asnd";  public static void main(String[] args) {    Test1 test1 = new Test1();    Inner mInner = test1.new Inner();    mInner.print();  }  void show() {    System.out.println("show");  }  public class Inner {    String name = "123";    private void print(){      show();      System.out.println(name);//打印的是123      System.out.println(Test1.this.name);//打印的是asnd    }  }}

匿名內部類

沒有名字的類,創建類的同時,也會創建一個對象。

只需要用到一次的類,就可以使用匿名內部類

  File file = new File("D:/cc.txt") {      @Override      public boolean delete() {        System.out.println("是否刪除y/n");        Scanner input = new Scanner(System.in);        String str = input.next();        if (str.equals("y")) {          return super.delete();        }        System.out.println("刪除失敗");        return false;      }    };    file.delete();  }

匿名對象

該對象只需要訪問一次.

new Thread() {      @Override      public void run() {        System.out.println("線程開始!");        try {          Thread.sleep(2000);          System.out.println("線程結束!");        } catch (Exception e) {          e.printStackTrace();        }        super.run();      }    }.start();

靜態內部類

1.靜態內部類只能訪問外部類靜態的方法和變量,不能訪問非靜態。

2.靜態內部類可以不需要創建外部類的引用,而直接創建。

匿名內部類訪問局部變量

內部類訪問局部變量必須final,如果沒有加,jdk1.8默認加上去了
當所使用的變量是在變的時候可以用下面的方法,也可以把下面的i在開始的時候定為靜態的

for (int i = 0; i < 5; i++) {      final int finali = i;      new Thread() {        public void run() {          System.out.println(finali);        };      }.start();    }

下面介紹一下內部類的實現技巧

public static void main(String[] args) {    Lam mLam = new Lam();    //第一種實現的方法    mLam.to(new Ligh() {      @Override      public void shin() {        System.out.println("on的第一種方法");      }    });    //第二種實現方法    class MyLam implements Ligh{      @Override      public void shin() {        System.out.println("第二種");      }}    mLam.to(new MyLam());  }}interface Ligh {  void shin();}class Lam {  public void to(Ligh ligh) {    ligh.shin();    System.out.println("on");  }}

感謝閱讀,希望能幫助到大家,謝謝大家對本站的支持!

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 青海省| 吴忠市| 秭归县| 华坪县| 雷波县| 曲沃县| 合川市| 和平区| 富阳市| 淳安县| 壶关县| 乐都县| 屏南县| 卓资县| 五家渠市| 涿鹿县| 永昌县| 建始县| 锦州市| 许昌市| 库尔勒市| 丹棱县| 霍城县| 福安市| 灵山县| 安塞县| 嘉兴市| 金塔县| 营山县| 甘泉县| 宁陵县| 安新县| 正宁县| 化德县| 无锡市| 资兴市| 瑞昌市| 三门县| 沅陵县| 阿城市| 清流县|