2012-02-21 115 views
0

假设我有一个抽象类FactorizedDialog。它看起来像这样(请注意,这仅仅是一些虚拟的例子)我可以在实例化一个匿名类时实现一个接口吗?

public abstract class FactorizedDialog extends Dialog { 

    public abstract void myMethod(); 
} 

现在我可以做这样的事情:

FactorizedDialog dialog = new FactorizedDialog() { 

      @Override 
      public void myMethod() { 
       // implementation here 
      } 
} 

正如你可能已经猜到了我延长对话框(这实际上是一个抽象类)只为它添加一个方法,所以当我创建一个匿名类时,我可以覆盖它。是否有可能在java中实现接口,而实例化对话框而不是使用派生的抽象类?

回答

1

没有,当你指定一个匿名内部类的父类,你可以要么指定一个普通的类来扩展的接口,但不能同时使用。 section 15.9 of the JLS中显示的语法根本不支持这两种语法。

0

如果您的意思是Dialog是一个界面,那么可以这样做。

Dialog dialog = new Dialog() { 

    @Override 
    public void myMethod() { 
    } 
} 

当然随后的myMethod声明应该进入Dialog接口。

+0

正如我所提到的,这两个都是抽象类。 – 2012-02-21 10:33:01

+0

@edem是的,我注意到后发布我的答案。 – adarshr 2012-02-21 10:33:49

相关问题