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