当前位置:网站首页>C# 一周入门高级编程之《C#-接口》Day Two
C# 一周入门高级编程之《C#-接口》Day Two
2022-08-03 07:59:00 【太阳风暴】
一、接口是什么
接口定义和 Java 里面的接口定义基本一致,也是一种声明的对外部的一个接口说明,本质上就是一个函数声明,不能实现,只有继承后重写该接口方法的类才能有作用。这样接口有什么好处呐?接口规定了一个蓝图,但并负责具体实现,具体实现就需要通过继承接口然后方式来实现这个蓝图内部的步骤。当然接口完全是可以用抽象类方式来实现,这里其实也是C#接口的一个特殊功能罢了,不必过于深入纠结。
在接口里面,我们可以方法和事件,属性不可以写在内部,这些都是接口的成员。接口只包含了成员的声明。成员的定义是派生类的责任。接口提供了派生类应遵循的蓝图设计。
接口的好处就是可以扩展性好,我们可以通过使用不同的实例对象,来扩展当前功能,而不需要去改代码,也就是更好的应对改变,接口的其实就是设计模式的一种演绎。
二、接口定义
接口定义需要使用到 interface 关键字,其实和类的实现没有构造函数,同时在接口定义时,默认是public访问属性,当然我们也可以明确指定 public
public interface Reader
{
int GetPath();
void SetPath(int value);
void GetContent();
}
- 接口内部成员不能写访问属性
- 接口内部只能是函数声明,不能有实现
三、接口继承
接口继承很简单,也就是说 接口之间也是能继承的,继承后的接口具有之前所有接口的成员,没有继承得访问权限,接口继承可以是多继承,可以是单继承,接口多继承主要是用来增加功能,用组合方式而不是继承方式来实现功能
public interface Reader
{
void GetContent();
}
public interface Encoder
{
void Encode(string content);
}
public interface ReaderEncoder : Reader, Encoder
{
string GetReaderEncodeContent();
}
Reader 是读取数据的,Encoder 是数据编码的,ReaderEncoder 就是加密数据读取的功能
四、接口使用
定义好接口之后,我们就去继承接口然后去实现对应的函数,那我们就可以去调用接口的方法,给予实现的类。
//
static void Main()
{
Reader reader = new TextReader();
reader.GetContent();
}
public interface Reader
{
void GetContent();
}
//这里可以从文件读取
public class TextReader : Reader
{
void Reader.GetContent()
{
//操作。。。
Console.Write("从文件读取");
}
}
//从网络中读取
public class NetWorkReader : Reader
{
void Reader.GetContent()
{
//操作。。。
Console.Write("从网络中读取");
}
}
边栏推荐
- 加速FinOps实践,为企业降本增效
- MySQL数据库————数据库与vs的连接
- ArcEngine(四)MapControl_OnMouseDown的使用
- pyspark df secondary sorting
- vs 2022无法安装 vc_runtimeMinmum_x86错误
- 图解Kernel Device Tree(设备树)的使用
- FusionAccess软件架构、FusionAccess必须配置的四个组件、桌面发放流程、虚拟机组类型、桌面组类型
- Karatsuba大数乘法的Verilog实现
- 用diskpart的offline命令弹出顽固硬盘
- Evaluate: A detailed introduction to the introduction of huggingface evaluation indicator module
猜你喜欢
随机推荐
greenplum role /user 管理
使用pipreqs导出项目所需的requirements.txt(而非整个环境)
Fortify白盒神器20.1.1下载及安装(非百度网盘)
用云机器/虚拟机架设方舟游戏?
pyspark df secondary sorting
ArcEngine(二)加载地图文档
加载properties文件,容器总结
Windows安装MySQL(MIS)
[Hello World] 二分查找笔记
redis AOF持久化个人理解
WordPress主题-B2美化通用子主题商业运营版
前缀和(区间和,子矩阵的和)
Poke the myth of Web3?Poke the iron plate.
Pop Harmony Basics Big Notes
tolower函数
ArcEngine (3) zoom in and zoom out through the MapControl control to achieve full-image roaming
JS函数获取本月的第一天和最后一天
最佳高质量字体
PowerShell:执行 Install-Module 时,不能从 URI 下载
mysql系统变量与状态变量