假设我有一个抽象类FactorizedDialog
。它看起来像这样(请注意,这只是一些虚拟的例子)
public abstract class FactorizedDialog extends Dialog {
public abstract void myMethod();
}
现在我可以这样做:
FactorizedDialog dialog = new FactorizedDialog() {
@Override
public void myMethod() {
// implementation here
}
}
您可能已经猜到我扩展Dialog(实际上是一个抽象类)只是为了添加一个方法,所以我可以在创建一个匿名类时覆盖它。在实例化Dialog而不是使用我的派生抽象类时,是否可以在 java 中实现接口?
答案 0 :(得分:1)
不,当您指定匿名内部类的超类时,您可以 指定扩展或接口的普通类,但不能同时指定两者。 section 15.9 of the JLS中显示的语法根本不允许这两种语法。
答案 1 :(得分:0)
如果您的意思是下面Dialog
是一个接口,那么可以这样做。
Dialog dialog = new Dialog() {
@Override
public void myMethod() {
}
}
当然,myMethod
的声明应该进入Dialog
界面。