09.匿名內部類的概述和格式

匿名內部類

  • A:作用:匿名內部類是創建某個類型子類對象的快捷方式。
  • B:格式:
new 父類或接口(){
    //進行方法重寫
};

代碼演示

//已經存在的父類:
public abstract class Person{
    public abstract void eat();
}
//定義并創建該父類的子類對象,并用多態的方式賦值給父類引用變量
Person  p = new Person(){
    public void eat() {
        System.out.println(“我吃了”);
}
};
//調用eat方法
p.eat();

使用匿名對象的方式,將定義子類與創建子類對象兩個步驟由一個格式一次完成,。雖然是兩個步驟,但是兩個步驟是連在一起完成的。
匿名內部類如果不定義變量引用,則也是匿名對象。代碼如下:

new Person(){
    public void eat() {
        System.out.println(“我吃了”);
}
}.eat();
package com.itheima_03;

/*
 *  匿名內部類:
 *      可以把匿名內部類看成是一個沒有名字的內部類
 *      定義在方法當中
 *      必須在定義匿名內部類的時候創建他的對象
 *  格式:
 *      new 類/接口()  {
 *          如果是創建了繼承這個類的子類對象,我們可以重寫父類的方法
 *          如果是創建了實現這個接口的子類對象,我們必須要實現該接口的所有方法
 *      };
 * 
 *  原理:而是創建了繼承這個類的子類對象或者是創建了實現這個接口的子類對象
 */
public class InnerDemo4 {
    public static void main(String[] args) {
        Outer o = new Outer();
        o.method();
    }
}

interface Inner {
    public void function();
}

class Outer {
    public void method() {

        /*
         * new Inner() {
         * 
         * @Override public void function() { System.out.println("function"); }
         * 
         * }.function(); }
         */

        Inner i = new Inner() {
            @Override
            public void function() {
                System.out.println("function");
            }
        };
        
        i.function();
        i.function();
    }
}
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • 1.ios高性能編程 (1).內層 最小的內層平均值和峰值(2).耗電量 高效的算法和數據結構(3).初始化時...
    歐辰_OSR閱讀 29,591評論 8 265
  • 設計模式概述 在學習面向對象七大設計原則時需要注意以下幾點:a) 高內聚、低耦合和單一職能的“沖突”實際上,這兩者...
    彥幀閱讀 3,786評論 0 14
  • 1、什么是存儲過程?大多時候,我們都是對一個表或者多個表的單條語句進行操作,但在實際生活中,我們有可能對多個表的多...
    莫問以閱讀 408評論 0 0
  • 端午節有感 歲歲端陽遠望親,年年在外不由身。 離鄉萬里憂誰解,粽子生吞掩內心。
    福灮月影閱讀 217評論 1 5
  • 第七課作業: 如果創作類型小說,你偏好哪一種?這一類型中給你印象最深刻的是哪一部作品?請評價此部作品,不低于200...
    藝小姐閱讀 211評論 3 3