重载抽象类中的抽象方法

时间:2015-03-09 22:34:30

标签: java inheritance abstract-class overloading abstract-methods

我希望有一个抽象类,它有一个抽象方法,比如abstract void compare()。但它所采用的参数应根据不同子类中的不同实现而变化。我想知道这样做的正确方法是什么?

我不能通过在抽象类本身中编写它的不同签名来重载它,因为如果我这样做,它的任何子类都需要实现所有版本,这不是我想要的。感谢。

2 个答案:

答案 0 :(得分:5)

假设compare()的每个版本都具有相同数量的参数(它们应该是),您可以使用泛型,以便子类可以定义参数的类型。

abstract <I, J> void compare(I arg1, J arg2);

答案 1 :(得分:1)

您应该使用Generics来执行此操作:

public abstract class AbstractClass<T>{
public abstract void compare(T element);
}

在实施中你写下这个:

Public class MyImpl extends AbstractClass<SpecificType>{
public void compare(SpecificType elemental{
// do stuff
}
}