【匿名內部類可不可以繼承或實現接口?】


答案是可以,而且是必須。。不過不是那種extends的繼承方式,解釋如下:

 

1.先了解一下匿名內部類:

見名知意,匿名內部類沒有類名,而且和其他類不同,它是一個表達式,語法類似於調用一個類的構造函數,如 A a = new A(){ };
此外還包含一個代碼塊,代碼塊中完成其類的定義

事實上,使用匿名內部類的前提條件就是必須繼承一個父類或實現一個接口

 

匿名內部類可以使你的代碼更加簡潔,你可以在定義一個類的同時對其進行實例化。它與局部類很相似,不同的是它沒有類名,如果某個局部類你只需要用一次,那么你就可以使用匿名內部類

2.代碼示例:

public class Anonymous {
    public static void main(String[] args) {
/*
       匿名類是一個表達式,匿名類的語法就類似於調用一個類的構建函數
    new  Animals(),除些之外,還包含了一個代碼塊,在代碼塊中完成類的定義
    */
        Animals a = new Animals(){
            public void eat(){
                System.out.println("匿名內部類");
            }
        };
        a.eat();//調用匿名內部類的方法
    }

}

abstract class Animals{
    public abstract void eat();
}

輸出結果就是:匿名內部類

可以節約一個類代碼的定義(也就是直接把子類的代碼放入父類中了)

同理,接口也可以繼承:

interface Animals{

    public void eat();

}

匿名內部類內容和上面的一致;

 

其實我們學習GUI的時候就用過匿名內部類,比如添加監聽事件:

button.addActionListener(new ActionListener() {
    @Override
    public void actionPerformed(ActionEvent e) {
        // do something
    }});

這個new ActionListener(){};就是匿名內部類

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM