1. 程式人生 > >內部類之匿名內部類

內部類之匿名內部類

匿名內部類

匿名內部類顧名思義,即沒有名字的內部類,一般表現形式為使用父類的引用指向你一個匿名物件,方法的實現在匿名語句塊中完成

eg:

Animal a = new Animal() {
    @Override
    public void sleep() {
        System.out.println("休眠一下");
    }
};
//輸出地址非Animal物件,而是包含了“$”符號的物件地址(即內部類)
System.out.println(a);
a.sleep();
​
Cat c = new Cat(){
    @Override
    public void eat() {
        System.out.println("吃貓糧");
    }
};
/*
針對以下介面建立匿名內部類物件
interface Sportable{
    void run();
    void jump();
}
*/

匿名內部類與回撥機制

Button.java

public class Button {
​
    //內部介面
    public interface OnClickListener{
        //回撥函式(鉤子函式)
        void click();
    } 
    
    public void setOnClickListener(OnClickListener lis){
        System.out.println("準備觸發");
        lis.click();
        System.out.println("清理資源");
    }
}

ButtonTest.java

public class ButtonTest{
    public static void main(String[] args) {
​
        Button btn = new Button();
        //匿名內部類使用
        btn.setOnClickListener(new OnClickListener() {
            //回撥機制
            @Override
            public void click() {
                System.out.println("事件被觸發。。。。");
            }
        });
    }
}