里氏替换原则:Liskov Substitution Principle, If S is a subtype of T, then objects of type T may be replaced with objects of type S, without breaking the program。
意思是子类对象(object of subtype/derived class)能够替换程序(program)中父类对象(object of base/parent class)出现的任何地方,并且保证原来程序的逻辑行为(behavior)不变及正确性不被破坏。
下面给个例子:
class Process {
void Do() {
// Doing something
}
}
class CreateProcess extends Process{
void Do() {
// Some other thing
throw new RunTimeException("exception");
}
}
这个例子就是违反了LSP原则的,子类修改了父类的行为,抛出了异常。和多态的区别是,这里是按协议编码,编码符合父类指明的协议。
网友评论