1

このコードは合法ではないことを理解しています:

class Popcorn {
    public void pop() {
        System.out.println("popcorn");
    }
}

class Food {
    Popcorn p = new Popcorn() {
        public void sizzle() {
            System.out.println("anonymous sizzling popcorn");
        }
        public void pop() {
            System.out.println("anonymous popcorn");
        }
    };
    public void popIt() {
        p.pop(); // OK, Popcorn has a pop() method
        p.sizzle(); // Not Legal! Popcorn does not have sizzle()
    }
}

では、sizzle メソッドを呼び出す方法は何でしょうか?

4

1 に答える 1

6

匿名クラスのメソッドは、外部からアクセスできるように、そのスーパークラスのメソッドをオーバーライド/実装する必要があります。残念ながら、目標を達成するためにボイラープレートをさらに作成する方法はありません。

于 2012-11-06T12:29:33.877 に答える