Java匿名内部类:必须实现继承的抽象方法

时间:2015-09-05 00:16:52

标签: java interface polymorphism inner-classes anonymous-inner-class

我无法理解我正在尝试的以下代码。

我有一个班级" ExtendMe",一个界面"可实施"和另一个班级" ImplementYikes"这将扩展课程" ExtendMe"并实施"可实施"如下:

class ImplementYikes extends ExtendMe implements Implementable{

    public static void main(String[] args){
        Yikes y1 = new Yikes();
        Yikes y2 = new childYikes();

        y1.display();
        y2.display();

        Implementable iii = new Implementable() {

            @Override
            public void iDisplay() {
                // TODO Auto-generated method stub

            }
        };


        ExtendMe eee = new ExtendMe() {
            @Override
            void cDisplay() {
                // TODO Auto-generated method stub
                super.cDisplay();
            }
        };

    }

}


interface Implementable{
    void iDisplay();
}

class ExtendMe {
    void cDisplay(){

    }
}

问题:创建" eee"时,我没有遇到编译器错误参考,因为你可以清楚地看到匿名的内部类是重写" cDisplay"方法。但是,当使用接口实现相同的逻辑时,通过创建引用" iii",我被提示编译时错误,声明我应该从接口实现方法,即使我正在重写Anonymous内部类中的方法。

错误直接来自IDE:

The type ImplementYikes must implement the inherited abstract method Implementable.iDisplay()

我得出以下结论:

  1. JVM抛出该错误,因为我们没有方法的默认实现" iDisplay"。也就是说,在我们实施基础实施之前,应该重写。

0 个答案:

没有答案