我正在开发一个简单的项目。在我的项目中,我与利斯科夫原则的含义发生冲突。
我用这个例子简化了我的项目问题:
public class Animal {
public void feed() {
// do something here
}
}
public class Dog extends Animal {
// some methods and attributes
@Override
public void feed() {
// never call parent feed() method (super.feed())
}
}
所以,我的问题是,如果我没有调用父方法并在覆盖方法中编写一个全新的代码,这是否违反了Liskov原则?
感谢。
答案 0 :(得分:4)
不,只要子类'它不会违反Liskov原则。实现满足了基类的期望。
答案 1 :(得分:1)
可替代性是面向对象编程中的一个原则,指出在计算机程序中,如果S是T的子类型,则类型T的对象可以用类型S的对象替换(即,类型T的对象可以是在不改变T的任何期望属性(正确性,执行的任务等)的情况下,用子类型S)的任何对象代替。