亚洲色蝴蝶中文娱乐网,在线亚洲欧美一区二区中文字幕,无人视频在线观看视频高清视频,99午夜国产精品一区二区,人人妻人人爽人人狠狠

在java中,Object o = new Object(){};這個花括號是干什么的?

時間:2020-04-02 16:37:15 類型:JAVA
字號:    

  右邊是一種匿名內(nèi)部類的寫法,

  new Object(){}代表匿名內(nèi)部類的一個子對象,{}內(nèi)的代碼依據(jù)此處“Object”是否包含抽象方法分兩種情況:

  1,若Object為接口或含有抽象方法(抽象類)、{}內(nèi)必須包含該接口的方法實現(xiàn)代碼或者說重寫該抽象類的抽象方法(抽象類或接口無法實例化)

  new Thread(new Runnable(){ //匿名

     public void run(){

         System.out.println("runnable run");

     }

  }).start();

  如上面這段創(chuàng)建線程并start的代碼,new Thread括號內(nèi)傳入的就是一個匿名內(nèi)部類(匿名對象)。該匿名內(nèi)部類實現(xiàn)了Runnable接口的run方法,因此可以創(chuàng)建對象并作為Thread構(gòu)造函數(shù)的入?yún)?/p>

  2,若Object為普通類,{}內(nèi)可以重寫也可以不重寫Object里面的方法。要注意的是,這個時候

  new Object(){} 整體作為Object對象的一個匿名子類對象

  另外,通常來說這種寫法,適用于你想重寫某個父類的某個方法(或?qū)崿F(xiàn)某個接口的方法)并調(diào)用,但是又不想再創(chuàng)建一個class類來重寫(或?qū)崿F(xiàn))的時候。通過以下格式來定義:

  new 父類名/接口名(){ 定義子類成員或者覆蓋父類方法 }.方法

  只是比較淺顯的回答,具體樓主多翻翻書看看吧、


<