什么是里氏替换原则呢? 什么是里氏替换原则呢?它在程序中用什么作用呢? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 http://baike.baidu.com/view/1688346.htm 里氏替换原则:其子类对象可以代替父类对象,但其父类对象不能代替子类对象.如:有一个父类:public abstract class A{} 有两个子类都继承父类A: public class B:A{} public class C:A[] 那么运用里氏替换原则就可以: A a = new B();或:A a = new C(); 但不可以: B b = new A(); OOP的思想里关于继承的描述: 子类对象可以代替父类对象; 父类对象不能代替子类对象; 父类的方法可以在子类中重写。 就是子类必须能够完全替代 父类,否则就是不合理的继承关系。换就话说,就是父类的方法 是子类全部需要的,如果不是全部需要的,你的继承关系就存在问题。例如。 父类(Anaimal)里有两个方法 Fly 和 Run. 但是 子类 Dog 只需要Run方法,而不需要Fly这个方法。所以这个父类就有问题。需要进一步优化,变成 飞行类动物和不会飞行的动物两个类,这两个类都继承动物类。并将 原动物类里的 方法 Fly 移动飞行类动物里,Run方法 还留在动物类里,而Dog 继承 不会飞行的动物那个 这就是所谓的接口编程,有一个接口A,有一个实现了A接口的类B;可以这么写: A a=new B(); 用接口引用来代替B类的实例相信你看得懂 面向对象编程的五大原则之一:单一职责原则开放封闭原则里氏替换原则依赖倒置原则接口隔离原则里氏替换原则:用俗话说就是 老鼠的儿子生来会打洞,表述的是一种继承关系继承必须确保超类所拥有的性质在子类中仍然成立。”也就是说,当一个子类的实例应该能够替换任何其超类的实例时,它们之间才具有is-A关系。 OCP作为OO的高层原则,主张使用“抽象”和“多态”将设计中的静态结构改为动态结构,维持设计的封闭性。 “抽象”是语言提供的功能。“多态”由继承语义实现。 c#和kodak的imgedit,做图像的缩放、旋转、裁剪、显示的问题 Invoke为什么会多次执行? Datagrid绑定Dataset时,列宽都是自动的,怎么自己设置? 请教C#,关于USB 操作手册问题 C# Process.start()一个程序后 被启动的程序会自动退出 谁能用大白话帮忙解释一下同步、异步的概念,14:00之前结贴给分! 如何得到一个dataset的某个表的行子集并把它构建成另一个dataset对象?? 跪请牛人介绍基本好书关于C#和Asp.net 请教高手 C#语言 C#如何改变comboBox的高度?
如:有一个父类:public abstract class A{}
有两个子类都继承父类A:
public class B:A{}
public class C:A[]
那么运用里氏替换原则就可以:
A a = new B();或:A a = new C();
但不可以: B b = new A();
子类对象可以代替父类对象;
父类对象不能代替子类对象;
父类的方法可以在子类中重写。
换就话说,就是父类的方法 是子类全部需要的,如果不是全部需要的,你的继承关系就存在问题。
例如。 父类(Anaimal)里有两个方法 Fly 和 Run. 但是 子类 Dog 只需要Run方法,而不需要Fly这个方法。
所以这个父类就有问题。需要进一步优化,变成 飞行类动物和不会飞行的动物两个类,这两个类都继承动物类。
并将 原动物类里的 方法 Fly 移动飞行类动物里,Run方法 还留在动物类里,而Dog 继承 不会飞行的动物那个
有一个接口A,有一个实现了A接口的类B;
可以这么写: A a=new B();
用接口引用来代替B类的实例相信你看得懂
单一职责原则
开放封闭原则
里氏替换原则
依赖倒置原则
接口隔离原则里氏替换原则:用俗话说就是 老鼠的儿子生来会打洞,表述的是一种继承关系继承必须确保超类所拥有的性质在子类中仍然成立。”也就是说,当一个子类的实例应该能够替换任何其超类的实例时,它们之间才具有is-A关系。
OCP作为OO的高层原则,主张使用“抽象”和“多态”将设计中的静态结构改为动态结构,维持设计的封闭性。
“抽象”是语言提供的功能。“多态”由继承语义实现。