私は今、匿名クラスを掘り下げようとしていますが、詳細をあまり参照せず、質問を簡単にしたいという1つの質問が発生しましsizzle()
た:次の匿名クラスでメソッドを呼び出すにはどうすればよいですか:
public 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()
ただし、上記の場合、メソッドを呼び出すための「キー」は何ですか?