我有以下情景:
public abstract class Value<T> {
public void Value add(Value v) {
// Statements
}
}
public class IntValue extends Value<String> {
public void IntValue add(IntValue v) {
// Statements
}
}
在代码的另一部分:
public void exec(Value a, Value b) {
a.add(b);
}
我的问题是,为什么,知道a和b是IntValue的实例,执行的代码来自他们的超类。
非常感谢!
答案 0 :(得分:2)
您有method overloading的示例(当您打算使用overriding时)。这是您应该使用@Override
注释的一个很好的示例。另外(我猜)你的通用Value
类应该是T
public abstract class Value<T> {
public void Value<T> add(Value<T> v) {
// Statements
}
}
添加注释会出现编译错误,
public class IntValue extends Value<Integer> {
@Override
public void IntValue add(IntValue v) {
// Statements
}
}