C# 接口与抽象类的区别? 情景下使用接口,什么情景下使用抽象类?
2024-08-28 22:09:52
接口与抽象类的区别:
接口支持多继承;抽象类不能实现多继承。
接口可以用于支持回调;抽象类不能实现回调,因为继承不支持。
接口只包含方法、属性、索引器、事件的签名,但不能定义字段和包含实现的方法;抽象类可以定义字段、属性、包含有实现的方法。
接口可以作用于值类型和引用类型;抽象类只能作用于引用类型。
什么情景下使用接口,什么情景下使用抽象类?
抽象类:
定义了一组接口,但又不想强迫每个实现类都必须实现所有的接口。可以用abstract class定义一组方法体,甚至可以是空方法体,然后由子类选择自己所感兴趣的方法来覆盖。
某些场合下,只靠纯粹的接口不能满足类与类之间的协调,还必需类中表示状态的变量来区别不同的关系。abstract的中介作用可以很好地满足这一点。
规范了一组相互协调的方法,其中一些方法是共同的,与状态无关的,可以共享的,无需子类分别实现;而另一些方法却需要各个子类根据自己特定的状态来实现特定的功能
接口:
类与类之前需要特定的接口进行协调,而不在乎其如何实现。
作为能够实现特定功能的标识存在,也可以是什么接口方法都没有的纯粹标识。
需要将一组类视为单一的类,而调用者只通过接口来与这组类发生联系。
需要实现特定的多项功能,而这些功能之间可能完全没有任何联系。
最新文章
- Windows hosts (使用方法 &;&; 不定期更新)
- ROS 常用命令字典
- Guava学习笔记:Guava新增集合类型-Bimap
- android 点击屏幕关闭 软键盘
- windows系统调用 线程 启动与挂起
- DbContextConfiguration 属性
- 【Android 界面效果15】Android UI 之一步步教你自定义控件(自定义属性、合理设计onMeasure、合理设计onDraw等)
- PNG优化/压缩
- 深入探究VC —— 编译器cl.exe(1)
- Codeforces Round #367 (Div. 2) C. Hard problem
- C为变量提供了5中存储模型(类)
- UEditor工具栏上自定义按钮、图标、事件和右击菜单添加自定义按钮
- Linux学习历程——SUID、SGID、SBIT简介
- [转] 快速部署Tomcat项目的Shell脚本
- 通过windows远程桌面连接CentOS系统
- 20180824 SSRS Line Chart 绘制
- nump库的简单函数介绍
- Windows系统内存分析工具的介绍
- linux vi命令详解2
- Multi-label &;&; Multi-label classification