匿名內(nèi)部類(轉(zhuǎn))

匿名內(nèi)部類也就是沒有名字的內(nèi)部類

正因為沒有名字稍途,所以匿名內(nèi)部類只能使用一次,它通常用來簡化代碼編寫

但使用匿名內(nèi)部類還有個前提條件:必須繼承一個父類或?qū)崿F(xiàn)一個接口
實例1:不使用匿名內(nèi)部類來實現(xiàn)抽象方法

abstract class Person {
    public abstract void eat();
}
 
class Child extends Person {
    public void eat() {
        System.out.println("eat something");
    }
}
 
public class Demo {
    public static void main(String[] args) {
        Person p = new Child();
        p.eat();
    }
}

運行結(jié)果:eat something

可以看到,我們用Child繼承了Person類,然后實現(xiàn)了Child的一個實例,將其向上轉(zhuǎn)型為Person類的引用

但是涡真,如果此處的Child類只使用一次,那么將其編寫為獨立的一個類豈不是很麻煩肾筐?

這個時候就引入了匿名內(nèi)部類
實例2:匿名內(nèi)部類的基本實現(xiàn)

abstract class Person {
    public abstract void eat();
}
 
public class Demo {
    public static void main(String[] args) {
        Person p = new Person() {
            public void eat() {
                System.out.println("eat something");
            }
        };
        p.eat();
    }
}

運行結(jié)果:eat something

可以看到综膀,我們直接將抽象類Person中的方法在大括號中實現(xiàn)了

這樣便可以省略一個類的書寫

并且,匿名內(nèi)部類還能用于接口上

實例3:在接口上使用匿名內(nèi)部類


interface Person {
    public void eat();
}
 
public class Demo {
    public static void main(String[] args) {
        Person p = new Person() {
            public void eat() {
                System.out.println("eat something");
            }
        };
        p.eat();
    }
}

運行結(jié)果:eat something

由上面的例子可以看出局齿,只要一個類是抽象的或是一個接口,那么其子類中的方法都可以使用匿名內(nèi)部類來實現(xiàn)

最常用的情況就是在多線程的實現(xiàn)上橄登,因為要實現(xiàn)多線程必須繼承Thread類或是繼承Runnable接口


public class Demo {
    public static void main(String[] args) {
        Thread t = new Thread() {
            public void run() {
                for (int i = 1; i <= 5; i++) {
                    System.out.print(i + " ");
                }
            }
        };
        t.start();
    }
}

運行結(jié)果:1 2 3 4 5

實例5:Runnable接口的匿名內(nèi)部類實現(xiàn)

public class Demo {
    public static void main(String[] args) {
        Runnable r = new Runnable() {
            public void run() {
                for (int i = 1; i <= 5; i++) {
                    System.out.print(i + " ");
                }
            }
        };
        Thread t = new Thread(r);
        t.start();
    }
}

運行結(jié)果:1 2 3 4 5

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末抓歼,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子拢锹,更是在濱河造成了極大的恐慌谣妻,老刑警劉巖,帶你破解...
    沈念sama閱讀 222,807評論 6 518
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件卒稳,死亡現(xiàn)場離奇詭異蹋半,居然都是意外死亡,警方通過查閱死者的電腦和手機充坑,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 95,284評論 3 399
  • 文/潘曉璐 我一進店門减江,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人捻爷,你說我怎么就攤上這事辈灼。” “怎么了也榄?”我有些...
    開封第一講書人閱讀 169,589評論 0 363
  • 文/不壞的土叔 我叫張陵巡莹,是天一觀的道長。 經(jīng)常有香客問我,道長降宅,這世上最難降的妖魔是什么骂远? 我笑而不...
    開封第一講書人閱讀 60,188評論 1 300
  • 正文 為了忘掉前任,我火速辦了婚禮腰根,結(jié)果婚禮上激才,老公的妹妹穿的比我還像新娘。我一直安慰自己唠雕,他們只是感情好贸营,可當(dāng)我...
    茶點故事閱讀 69,185評論 6 398
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著岩睁,像睡著了一般钞脂。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上捕儒,一...
    開封第一講書人閱讀 52,785評論 1 314
  • 那天冰啃,我揣著相機與錄音,去河邊找鬼刘莹。 笑死阎毅,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的点弯。 我是一名探鬼主播扇调,決...
    沈念sama閱讀 41,220評論 3 423
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼抢肛!你這毒婦竟也來了狼钮?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 40,167評論 0 277
  • 序言:老撾萬榮一對情侶失蹤捡絮,失蹤者是張志新(化名)和其女友劉穎熬芜,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體福稳,經(jīng)...
    沈念sama閱讀 46,698評論 1 320
  • 正文 獨居荒郊野嶺守林人離奇死亡涎拉,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,767評論 3 343
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了的圆。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片鼓拧。...
    茶點故事閱讀 40,912評論 1 353
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖越妈,靈堂內(nèi)的尸體忽然破棺而出毁枯,到底是詐尸還是另有隱情,我是刑警寧澤叮称,帶...
    沈念sama閱讀 36,572評論 5 351
  • 正文 年R本政府宣布种玛,位于F島的核電站藐鹤,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏赂韵。R本人自食惡果不足惜娱节,卻給世界環(huán)境...
    茶點故事閱讀 42,254評論 3 336
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望祭示。 院中可真熱鬧肄满,春花似錦、人聲如沸质涛。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,746評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽汇陆。三九已至怒炸,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間毡代,已是汗流浹背阅羹。 一陣腳步聲響...
    開封第一講書人閱讀 33,859評論 1 274
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留教寂,地道東北人捏鱼。 一個月前我還...
    沈念sama閱讀 49,359評論 3 379
  • 正文 我出身青樓,卻偏偏與公主長得像酪耕,于是被迫代替她去往敵國和親导梆。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 45,922評論 2 361

推薦閱讀更多精彩內(nèi)容

  • 1、靜態(tài)內(nèi)部類(static inner classes):最簡單的內(nèi)部類梳虽。只能訪問外部類的靜態(tài)成員變量與靜態(tài)方法...
    juexin閱讀 1,214評論 0 1
  • 1. Java基礎(chǔ)部分 基礎(chǔ)部分的順序:基本語法址芯,類相關(guān)的語法,內(nèi)部類的語法窜觉,繼承相關(guān)的語法谷炸,異常的語法,線程的語...
    子非魚_t_閱讀 31,668評論 18 399
  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理禀挫,服務(wù)發(fā)現(xiàn)旬陡,斷路器,智...
    卡卡羅2017閱讀 134,716評論 18 139
  • 內(nèi)部類:在一個類內(nèi)部定義的類 內(nèi)部類屬于外部類的一個成員,所以內(nèi)部類可以直接使用外部類的成員 直接創(chuàng)建內(nèi)部類的對象...
    Jonath閱讀 288評論 0 0
  • 內(nèi)部類(Nested Class)仍是獨立的類语婴,只不過被包含于其他類中描孟。編譯之后內(nèi)部類會被編譯成獨立的.class...
    七弦桐語閱讀 428評論 0 4