设计原则系列文章
必知必会的设计原则——单一职责原则
必知必会的设计原则——开放封闭原则
必知必会的设计原则——依赖倒置原则
概述
如果S(子类)是T(父类)的子类型,则T(父类)类型的对象可以替换为S(子类)类型的对象。
所有引用父类对象的地方,都可以使用子类类型代替。
子类可以替换父类。
里氏替换代码
- public class Person
- {
- public string ? Name { get; set; }
- }
- public class Student : Person
- {
- public int Id { get; set; }
- }
- public class Teacher : Person
- {
- public int Number { get; set; }
- }
复制代码- // 父类只有自己的成员,无法拥有子类的成员
- Person p=new Person();
- p.Name = "ren";
- //子类继承了父类,不仅有自己的成员,而且也拥有了父类的成员
- Student student=new Student();
- student.Name = "xuesheng";
- student.Id = 1;
- Teacher teacher=new Teacher();
- teacher.Name = "教师";
- teacher.Number = 2;
- Person pStudent = new Student();
- pStudent.Name = "父类变量接收了子类对象";
- //编译不通过,因为父类必须强转为子类,也就是说将pStudent强制转换为Student类型
- //Student s = pStudent;
- Student s = (Student)pStudent;
- s.Name = "";
- s.Id = 2;
- // 也可以用as做为转换,转换不成功时返回null,is用来判断是否转换成功,成功则为true,失败则为false
- Student? ss = p as Student;
- if (p is Student)
- {
- ...
- }
- else {
- ...
- }
复制代码 总结
里氏替换原则日常编程大家肯定用,也特别简单。但我们会发现在编程中还是有同学会违反里氏替换原则,最后造成的后果写的代码出问题的几率将会大大增加。
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作! |