【发布时间】:2015-11-01 11:49:37
【问题描述】:
我有一个抽象超类 A,其方法为 doSomething()。 A 的子类必须实现doSomething(),但也有一些公共代码应该在每次子类调用doSomething() 时调用。我知道这可以实现:
public class A {
public void doSomething() {
// Things that every sub-class should do
}
}
public class B extends A {
public void doSomething() {
super.doSomething();
// Doing class-B-specific stuff here
...
}
}
不过,这似乎存在三个问题:
- 方法签名必须匹配,但我可能只想返回子类方法中的某些内容,而不是超类中的内容
- 如果我将 A.doSomething() 设为抽象,则无法在 A 中提供(通用)实现。如果我不将其设为抽象,则无法强制子类实现它。
- 如果我使用不同的方法来提供通用功能,我无法强制 B.doSomething() 调用该通用方法。
任何想法应该如何实现这些方法?
【问题讨论】:
标签: java inheritance