我必须创建许多非常相似的类,它们之间只有一种方法不同。所以我认为创建抽象类是实现这一目标的好方法。但是我想要覆盖的方法(例如,方法foo())没有默认行为。我不想保留任何默认实现,强制所有扩展类实现此方法。我该怎么做?
答案 0 :(得分:77)
您的基类需要抽象方法:
public abstract class BaseClass {
public abstract void foo();
}
这样,您不指定默认行为和,强制从BaseClass
继承的非抽象类指定foo
的实现。
答案 1 :(得分:11)
只需将foo()定义为基类中的抽象方法:
public abstract class Bar {
abstract void foo();
}
答案 2 :(得分:9)
只需将方法抽象化即可。
这将强制所有子类实现它,即使它是在抽象类的超类中实现的。
public abstract void foo();
答案 3 :(得分:5)
如果你有一个抽象类,那么制作你的方法(让我们说foo
也是抽象的)
public abstract void foo();
然后所有子类都必须覆盖foo
。
答案 4 :(得分:4)
制作此方法abstract
。