type
status
date
slug
summary
tags
category
icon
password
Property
Aug 14, 2023 11:57 AM
内容:接口 抽象类 SOLID 单元测试 反射

本节内容

什么是接口和抽象类
  • 接口和抽象类都是“软件工程产物”
  • 具体类→抽象类→接口:越来越抽象,内部实现的东西越来越少
  • 抽象类是未完全实现逻辑的类(可以有字段和非public成员,他们代表了具体逻辑)
  • 抽象类为复用而生:专门作为基类来使用,也具有解耦功能
  • 封装确定的,开放不确定的,推迟到合适的子类中去实现
  • 接口是完全未实现逻辑的“类”(“纯虚类”;只有函数成员;成员全部public,隐式)
  • 接口为解耦而生:“高内聚,低耦合”,方便单元测试
  • 接口是一个“协约”,早已为工业生产所熟知(有分工必有协作,有协作必有协约)
  • 他们都不能实例化,只能用来声明变量、引用具体类(concrete class)的实例

抽象类

为做基类而生的“抽象类”与“开闭原则”
有抽象方法或其他抽象成员,类就成了抽象类
函数成员没有被完全实现的类
不允许实例化抽象类,两个用途:作为基类让别人派生,作为基类声明变量,引用子类的实例
抽象方法:纯虚方法
开闭原则:如果不是修bug,或者添加新的功能,不要去修改的类的代码,尤其是函数成员的代码。我们应该封装一些不变的,稳定的和确定的成员,把不确定的,有可能改变的成员修改为抽象成员,并且留给子类实现。
之前的实现方案,纯虚方法
 
改为抽象类实现,子类实现的时候也需要加override
抽象类不能直接被实例化
纯虚类的形式
换为接口interface的形式
抽象类:未完全实现
接口:完全未实现
C#知识学习—22 重写与多态C#知识学习—21 类的继承,类成员的访问控制
  • Waline
Kitety
Kitety
独特为佳
公告
我曾经七次鄙视自己的灵魂
--卡里·纪伯伦
第一次,当它本可进取时,却故作谦卑;
第二次,当它在空虚时,用爱欲来填充;
第三次,在困难和容易之间,它选择了容易;
第四次,它犯了错,却借由别人也会犯错来宽慰自己;
第五次,它自由软弱,却把它认为是生命的坚韧;
第六次,当它鄙夷一张丑恶的嘴脸时,却不知那正是自己面具中的一副;
第七次,它侧身于生活的污泥中,虽不甘心,却又畏首畏尾。
 
最新评论
Loading...