最新要闻

广告

手机

iphone11大小尺寸是多少?苹果iPhone11和iPhone13的区别是什么?

iphone11大小尺寸是多少?苹果iPhone11和iPhone13的区别是什么?

警方通报辅警执法直播中被撞飞:犯罪嫌疑人已投案

警方通报辅警执法直播中被撞飞:犯罪嫌疑人已投案

家电

天天日报丨必知必会的设计原则——里氏替换原则

来源:博客园


(相关资料图)

设计原则系列文章

必知必会的设计原则——单一职责原则

必知必会的设计原则——开放封闭原则

必知必会的设计原则——依赖倒置原则

概述

如果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,失败则为falseStudent? ss = p as Student;if (p is Student){...}else { ...}

总结

里氏替换原则日常编程大家肯定用,也特别简单。但我们会发现在编程中还是有同学会违反里氏替换原则,最后造成的后果写的代码出问题的几率将会大大增加。

关键词: 设计原则 大大增加 也就是说