为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

素胚勾勒不出你 2021-05-10 09:33:55
B类中的show()方法是“重写”,“实现”还是仅是“定义”?interface A{    void show();}class B implements A{    public void show()    {        System.out.println("What is the proper term to explain?");    }}
查看完整描述

3 回答

?
慕标琳琳

TA贡献1830条经验 获得超9个赞

一般来说,我说“覆盖”是指重新定义继承的行为,而我说“实现”是指定义一个行为(尚未实现)。

所以我会说那个 B工具show()

而JLS似乎用这种方式去:

如果非抽象方法mC覆盖类中的抽象方法,则称该方法是mA从实现的。CmCmAC

在甲骨文例如文档好像说override是重新定义的行为太:

子类重写方法的能力使类可以从行为“足够接近”的超类继承,然后根据需要修改行为。覆盖方法与其覆盖的方法具有相同的名称,数量和参数类型,并且返回类型相同。重写方法还可以返回重写方法返回的类型的子类型。此子类型称为协变返回类型。

请注意,java.lang.Override注解并没有相反的意思(强调是我的):

指示方法声明旨在覆盖超类型中的方法声明。如果使用此注释类型对方法进行注释,则除非至少满足以下条件之一,否则要求编译器生成错误消息:

该方法的确覆盖实现了在超类型中声明的方法。

该方法的签名与Object中声明的任何公共方法的签名等效。

该API可以@Implement另外为@Override注释提供。
但是两者都显得很笨拙。因此,他们可能只保留一个:@Override传达两件事。


查看完整回答
反对 回复 2021-05-19
?
四季花海

TA贡献1811条经验 获得超5个赞

您应该说实现,因为这override意味着您要覆盖某些现有方法,这对于接口来说是不正确的。接口不能包含方法定义,它们仅指定合同。


查看完整回答
反对 回复 2021-05-19
  • 3 回答
  • 0 关注
  • 183 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信