当我们在类中定义接口的抽象方法时,我们是“覆盖”或“实现”,还是简单地说“定义”这些方法?

B类中的show()方法是“重写”,“实现”还是仅是“定义”?


interface A

{

    void show();

}


class B implements A

{

    public void show()

    {

        System.out.println("What is the proper term to explain?");

    }

}


素胚勾勒不出你
浏览 184回答 3
3回答

慕标琳琳

一般来说,我说“覆盖”是指重新定义继承的行为,而我说“实现”是指定义一个行为(尚未实现)。所以我会说那个 B工具show()。而JLS似乎用这种方式去:如果非抽象方法mC覆盖类中的抽象方法,则称该方法是mA从实现的。CmCmAC在甲骨文例如文档好像说override是重新定义的行为太:子类重写方法的能力使类可以从行为“足够接近”的超类继承,然后根据需要修改行为。覆盖方法与其覆盖的方法具有相同的名称,数量和参数类型,并且返回类型相同。重写方法还可以返回重写方法返回的类型的子类型。此子类型称为协变返回类型。请注意,java.lang.Override注解并没有相反的意思(强调是我的):指示方法声明旨在覆盖超类型中的方法声明。如果使用此注释类型对方法进行注释,则除非至少满足以下条件之一,否则要求编译器生成错误消息:该方法的确覆盖或实现了在超类型中声明的方法。该方法的签名与Object中声明的任何公共方法的签名等效。该API可以@Implement另外为@Override注释提供。但是两者都显得很笨拙。因此,他们可能只保留一个:@Override传达两件事。

四季花海

您应该说实现,因为这override意味着您要覆盖某些现有方法,这对于接口来说是不正确的。接口不能包含方法定义,它们仅指定合同。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java