Что касается принципа замены Лискова (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 методу, который ожидает объект BaseClass в качестве параметра. Однако два метода heal() ведут себя немного по-разному.
Могу ли я перезаписать конкретные методы абстрактных базовых классов в их дочерних классах без ущерба для LSP?