Java-definition-";“替代原则”;

Java-definition-";“替代原则”;,java,Java,我读过一篇摘要,在谈到继承时,它总是使用“替代原则”的定义。但它并没有解释这个原则的含义 这个原则是什么 谢谢。基本上说,实现确定接口的类可以被实现相同接口的任何其他类替换。您可以在引用定义中找到有关此的更多信息: “如果程序模块正在使用基类的引用,那么它应该能够用派生类替换基类,而不会影响程序模块的功能。”您可能知道它,只是不知道它的名称 它只是说“如果S是T,那么对T的引用可以更改为对S的引用。”使用指针或基类引用的函数必须能够在不知道的情况下使用派生类的对象 它也被称为liskov替换它

我读过一篇摘要,在谈到继承时,它总是使用“替代原则”的定义。但它并没有解释这个原则的含义

这个原则是什么


谢谢。

基本上说,实现确定接口的类可以被实现相同接口的任何其他类替换。您可以在引用定义中找到有关此的更多信息:


“如果程序模块正在使用基类的引用,那么它应该能够用派生类替换基类,而不会影响程序模块的功能。”

您可能知道它,只是不知道它的名称


它只是说“如果S是T,那么对T的引用可以更改为对S的引用。”

使用指针或基类引用的函数必须能够在不知道的情况下使用派生类的对象


它也被称为liskov替换

它的意思很简单:子类必须遵守超类设置的契约

如果您扩展了一个超类,您应该阅读它的文档并按照它的指示实现它。就这些


如果我再听到一次“Liskov替换”,我会杀了一只小猫。

替换原则或Liskov替换原则(LSP)基本上规定,只有在每个场景中,对象都可以用作其父对象时,对象才应该处于层次结构中。举个具体例子:

public class Rectangle    {  
   //Stuff about rectangles    }  

public class Square extends Rectangle    {  
   //VIOLATES LSP!!  
} 


矩形不是正方形,您将示例写反了。
public abstract class Shape  
{  
   //stuff about shapes  
}  

public class Square extends Shape  
{  
   //Square  
}  

public class Rectangle extends Shape  
{  
    //Rectangle  
}