【发布时间】:2014-05-19 19:52:00
【问题描述】:
我了解到如果方法具有相同的签名,我可以覆盖它。
但是派生类中被覆盖方法的返回类型可以是超类方法返回类型的子类型。如果上面提供的陈述是正确的,谁能告诉我这段代码有什么问题?
class Base{
public int getValue(){ return 222; } //1
}
class Sub extends Base{
public byte getValue(){ return 10; } //2
public static void main(String[] args){
Base b = new Sub();
System.out.println(b.getValue());
}
}
【问题讨论】:
-
为了覆盖,该方法是否不需要与它的覆盖方法具有 exact 相同的签名?
-
byte 不是 int 的子类型,它们没有继承关系,因为它们是基元。 @Anthony,这些方法确实具有相同的签名。
-
返回类型不是 Java 中方法签名的一部分。
-
@ant 它可以是协变的
标签: java overriding