【发布时间】:2016-01-10 12:43:04
【问题描述】:
关于 Liskov 替换原则 (LSP),它指出派生类的对象可以替换它的基类对象,而不会导致程序无法执行。
如果我的父类是一个带有函数的抽象基类:
public abstract class BaseClass {
public void heal() {
health++;
}
}
我可以在派生类中覆盖治疗方法吗?它对 LSP 原则仍然有效,例如:
public class ChildClass extends BaseClass {
@Override public void heal() {
super.heal();
super.heal();
}
程序仍将执行,我可以将 ChildClass-Objects 传递给需要 BaseClass-Object 作为参数的方法。然而,这两种heal() 方法的行为略有不同。
我能否在不损害 LSP 的情况下在其子类中覆盖抽象基类的具体方法?
【问题讨论】:
标签: oop liskov-substitution-principle