iT邦幫忙

0

java: 創建的"匿名類別",一定要是某內部類別嗎?

  • 分享至 

  • xImage
  1. 我看到書寫「當某內部類別的物件,在程式裡只用到一次,我們可以將該物件的類別定義為匿名物件」,但下面這段程式class Pikachu 不是class App的內部類別,為何可以建立Pikachu匿名類別呢?
public class App {
    public static void main(String[] args) {
        Pikachu p4=new Pikachu(){
            //無需作任何事
            //也可以覆蓋setLevel()方法
        };
    }
}
abstract class Pokemon{
    int level;
    abstract void setLevel(int l);
}
class Pikachu extends Pokemon{
    @Override
    void setLevel(int l) {
        this.level=l;
    }
}
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

1 個回答

0
galaxian85
iT邦新手 4 級 ‧ 2022-02-13 15:13:35

App 這個 class 裡面的 p4 其實不是 Pikachu, 而是一個繼承了 Pikachu 的內部類別
簡單來說你的程式其實等於這樣

public class App {
    public static void main(String[] args) {
        class InnerPikachu extends Pikachu {
            // override 父類別的方法
        }
        Pikachu p4 = new InnerPikachu();
    }
}
abstract class Pokemon{
    int level;
    abstract void setLevel(int l);
}
class Pikachu extends Pokemon{
    @Override
    void setLevel(int l) {
        this.level=l;
    }
}

我要發表回答

立即登入回答