首页 > 解决方案 > 为什么在两个代码片段中的“@Override”注释都能正常工作?

问题描述

尽管该类B实现了接口A,但它不提供方法的实现show()。同样,DextendsC但在类 D 中的实现与其超类displayNothing()中方法的实现相同。displayNothing()C

但是在这两种情况下@Override,注释都可以正常工作,为什么?

//code snippet 1
interface A
{
    void show();
}
abstract class B implements A
{
    @Override        
    abstract public void show(); 
}

//code snippet 2
class C
{
    void displayNothing()
    {
    }
}
class D extends C
{
    @Override
    void displayNothing()
    {
    }
}

标签: javainheritanceinterfaceoverridingabstract-class

解决方案


@Override 只关心您的函数名称以及数据类型是否与超类中的方法相同(没有字母错误)。在您的情况下,它是相同的。尝试在您的 D 类中将void更改为int。它显示编译错误。至于您的抽象类方法,它不需要定义任何东西,因为名称说明了一切,它是abstract


推荐阅读