刘铁猛C#入门 027 抽象和开闭原则

什么是接口和抽象类

接口和抽象类都是"软件工程产物"

抽象类

具体类→抽象类>接口:越来越抽象,内部实现的东西越来越

抽象类是末完全实现逻辑的类(可以有字段和非public成员,它们代表了"具体逻辑")

抽象类为复用而生:专门作为基类来使用,也具有解功能

封装确定的,开放不确定的,推迟到合适的子类中去实现

抽象类里面不一定是抽象方法,抽象方法一定在抽象类

接口

接口是完全未实现逻辑的"类"("纯类",只有函数成员;成员全部public abstract)

接口为解耦而生:"高内聚,低耦合",方便单元测试

接口是一个"协约",早已为工业生产所熟知(有分工必有协作,有协作必有协约)

它们都不能实例化,只能用来声明变量、引用具体类(concrete class)的实例

相关推荐
西猫雷婶2 分钟前
python学opencv|读取图像(四十三)使用cv2.bitwise_and()函数实现图像按位与运算
开发语言·python·opencv
C++小厨神6 分钟前
C#语言的函数实现
开发语言·后端·golang
qwe3526338 分钟前
自定义数据集使用scikit-learn中的包实现线性回归方法对其进行拟合
开发语言·python
S-X-S17 分钟前
OpenAI模块重构
开发语言·重构·openai
计算机-秋大田30 分钟前
基于JAVA的微信点餐小程序设计与实现(LW+源码+讲解)
java·开发语言·后端·微信·小程序·课程设计
llp111035 分钟前
基于java线程池和EasyExcel实现数据异步导入
java·开发语言
四念处茫茫42 分钟前
【C语言系列】深入理解指针(3)
c语言·开发语言·visual studio
步、步、为营3 小时前
C# 与.NET 日志变革:JSON 让程序“开口说清话”
c#·json·.net
漫漫进阶路6 小时前
VS C++ 配置OPENCV环境
开发语言·c++·opencv
BinaryBardC7 小时前
Swift语言的网络编程
开发语言·后端·golang