子类中的重载不起作用

时间:2014-06-22 16:11:00

标签: java polymorphism override overloading

我有以下情景:

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的实例,执行的代码来自他们的超类。

非常感谢!

1 个答案:

答案 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
  }
}