關於Liskov替換原則(LSP),它聲明派生類的對象可以在不會導致程序執行失敗的情況下代替它的基類對象。Java LSP「派生對象可以替代基礎對象」
如果我的父類是一個抽象基類的功能是什麼:
public abstract class BaseClass {
public void heal() {
health++;
}
}
我可以覆蓋的持續治療方法在派生類中,它仍然是有效的LSP-原則如:
public class ChildClass extends BaseClass {
@Override public void heal() {
super.heal();
super.heal();
}
Programm仍然會執行,我可以將ChildClass-Objects傳遞給需要BaseClass-Object作爲參數的方法。然而,這兩個heal()方法表現出略有不同的地方。
我可以在不傷害LSP的情況下覆蓋其子類中抽象基類的具體方法嗎?