【发布时间】:2017-03-17 19:45:44
【问题描述】:
我有一个超类,有 2 个子类。如果条件 foo 为真,我希望其中一个子类采取一些行动,而其他子类应该什么都不做:
public void doFoo() {
// some 10 lines common to both subclasses.
boolean foo = checkFoo();
/**
* if foo is true, subclass1 should do something. subcass2 does nothing.
*/
// some 10 lines common to both subclasses.
}
我想出的解决方案:
public void doFoo() {
// some 10 lines common to both subclasses.
boolean foo = checkFoo();
if (foo) {
doSomething();
}
// some 10 lines common to both subclasses.
}
class subclass1 extends superclass {
public void doSomething() {
// some lines of code.
}
}
class subclass2 extends superclass {
public void doSomething() {
// do nothing
}
}
对于这个常见问题有什么更简洁、更好、更标准的解决方案吗?
【问题讨论】:
-
派生类中是否需要显式的空函数?你可以只在基类中有一个空函数,只在需要它的子类中覆盖它
标签: java oop inheritance