里氏交流准则定义
里氏交流准则(Liskov Substitution Principle,LSP)是面向对象设计中的一个重要准则,它是由计算机科学家Barbara Liskov提出的。该准则指出,假设一个程序经常使用基类的某个子类对象,那么这个程序不应该在经常使用子类对象时发生任何失误或意外,也就是说,子类对象须要能够齐全交流掉基类对象。
子类须要能够交流基类
里氏交流准则的外围现实是:子类须要能够交流基类,而不会影响程序的正确性。也就是说,子类对象须要具备基类对象的一切属性和方法,并且不能扭转基类对象的行为。假设子类对象不能齐全交流基类对象,那么就违犯了里氏交流准则。
例如,咱们有一个图形类Shape,它有一个计算面积的方法area()。如今咱们派生出一个正方形类Square,它承袭自Shape,并且重写了area()方法。假设咱们在程序中经常使用Shape对象来计算面积,那么咱们可以用Square对象来交流Shape对象,由于Square对象也有area()方法,并且它的行为与Shape对象分歧。然而,假设咱们在Square类中扭转了area()方法的行为,那么就违犯了里氏交流准则。
承袭关系须要合乎is-a关系
除了子类须要能够交流基类之外,里氏交流准则还恳求承袭关系须要合乎is-a关系。也就是说,子类须要是基类的一种类型,而不是基类的某个属性或方法。假设子类只是基类的某个属性或方法,那么就不能齐全交流基类对象,也就违犯了里氏交流准则。
例如,咱们有一个植物类Animal,它有一个eat()方法。如今咱们派生出一个狗类Dog,它承袭自Animal,并且减少了一个bark()方法。这样,咱们可以用Dog对象来交流Animal对象,由于Dog对象也有eat()方法,并且它是Animal的一种类型。然而,假设咱们在Dog类中减少了一个run()方法,那么就违犯了里氏交流准则,由于run()方法并不是Animal的一种属性或方法。
开头
里氏交流准则是面向对象设计中的一个重要准则,它恳求子类须要能够齐全交流基类对象,并且承袭关系须要合乎is-a关系。遵照里氏交流准则可以提高程序的可爱护性和可裁减性,放大程序的失误和意外。因此,在启动面向对象设计时,咱们应该一直遵照里氏交流准则。