当前位置:网站首页>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("从网络中读取");
}
}
边栏推荐
猜你喜欢

Daily practice of PMP | Do not get lost in the exam-8.2 (including agility + multiple choice)

MySQL数据库————数据库与vs的连接

服务器资源监控工具-nmon、nmon_analyser

Postman will return to results generated CSV file to the local interface

Docker starts mysql

pyspark df secondary sorting

day12---接口和协议

mysql备份时的快照原理

用diskpart的offline命令弹出顽固硬盘

Redis分布式锁
随机推荐
最佳高质量字体
pyspark @udf loop using variable problem
Arduino框架下对ESP32 NVS非易失性存储解读以及应用示例
图解Kernel Device Tree(设备树)的使用
word之个人设置
"Swordsman Offer" brush questions print from 1 to the largest n digits
ArcEngine (2) loading the map document
ArcEngine(五)用ICommand接口实现放大缩小
Karatsuba大数乘法的Verilog实现
训练正常&异常的GAN损失函数loss变化应该是怎么样的
解决移动端有纵向滚动条但是不能滚动的问题
流行和声基础大笔记
Neo4j 4.X:导入OWL文件
Charles抓包工具学习记录
FusionAccess软件架构、FusionAccess必须配置的四个组件、桌面发放流程、虚拟机组类型、桌面组类型
剑指offer专项突击版第18天
加速FinOps实践,为企业降本增效
Transformer、BERT、GPT 论文精读笔记
集群
Redis分布式锁