gpt4 book ai didi

java - 调用匿名类的子类方法

转载 作者:行者123 更新时间:2023-12-01 17:27:37 25 4
gpt4 key购买 nike

我现在正在尝试深入研究匿名类,并且刚刚出现了一个问题,我不想提及太多细节并直接提出我的问题:如何调用方法 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()
}
}

众所周知,在多态性规则中,父类(super class)的引用不能在不向下转换的情况下调用子类的方法(即使它引用给定子类的对象)。但是,在上述情况下,调用 sizzle() 方法的“关键”是什么?

最佳答案

sizzle() 方法根本无法从外部访问,因为该类是匿名的。

p 引用是一个 Popcorn 类型,并且没有定义 sizzle()

匿名类是一次性的,并且在某些设计模式中大量使用(例如观察者),因为Java没有第一类函数,即你不能传递函数对象周围。

关于java - 调用匿名类的子类方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13713301/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com