Error message here!

Hide Error message here!

忘记密码?

Error message here!

请输入正确邮箱

Hide Error message here!

密码丢失?请输入您的电子邮件地址。您将收到一个重设密码链接。

Error message here!

返回登录

Close

解读经典《C#高级编程》继承 页107-113.章4

圣殿骑士18 2019-02-22 18:10:00 阅读数:193 评论数:0 点赞数:0 收藏数:0

前言


本章节开始讲接口。

接口

接口的声明很像抽象类,有方法的声明但无方法体。但它比抽象类限制更多。和类比起来,接口的定义有众多限制。

  • 接口只能包含声明,而无方法体
  • 接口只能包含方法、属性、索引器、事件的声明。即不能有:构造函数、字段、操作符重载
  • 成员不允许声明修饰符。接口默认就是public的。

定义和实现接口

一个比较典型的接口定义,比如:

/// <summary>
/// 虚拟读写器
/// </summary>
public class VirtualReader : RFReader, IRFReader, IDevice
{
//此类继承自两个接口:设备IDevice,和读写器IRFReader,并继承读写器基类RFReader
//派生类 需要实现接口声明的所有方法
}

我们可以看到:

  1. 类可以继承多个接口
  2. 接口命名规范,是以I开头的字符串,即所谓匈牙利(Hungarian)命名法
    这是由C#语法的特殊性决定的,Java的接口就没有这种命名方式。这是因为C#对类和接口,都叫做继承,对接口加I能够明确区分出哪些是接口哪些是类。而Java继承用关键字extends,实现接口用关键字implements,很好区分。

在接口使用上,“接口引用”完全等同于“类引用”。比如以上的例子,在实例化类时,如下定义都是可以的:

IDevice device = new VirtualReader();
IRFReader reader = new VirtualReader();
VirtualReader vreader = new VirtualReader();

这样就可以在不同的应用场景下,声明不同的类或者接口来实现代码。

派生的接口

接口和类一样可以继承。同时,因为接口可以多继承,所以接口变的非常强大。在编程中用好接口是一个基本技能要求。
举例:

/// <summary>
/// 设备
/// </summary>
public interface IDevice
{
/// <summary>
/// 当前设备的属性配置
/// </summary>
DeviceConfigurations Configurations { get; set; }
}
/// <summary>
/// Rfid读写器/发卡器/读卡器/一体机等
/// </summary>
public interface IRFReader : IDevice
{
/// <summary>
/// 读写器类型Id
/// </summary>
ReaderType TypeId { get; set; }
/// <summary>
/// 读写器是否连接
/// </summary>
bool IsConnected { get; set; }
/// <summary>
/// 读写器是否正在读取
/// </summary>
bool IsReading { get; set; }
}

到此为止,本章的继承已经讲完了。我们讲到了对类的单继承,对接口的多继承。以及在继承过程中使用多种关键字,实现不同的特性,比如virtual,override,new,sealed等。还讲到了类构造时使用初始化器的原理。
下一章我们开始讲解泛型。泛型是个好东西,理解好、使用好泛型是个基础技术能力。



觉得文章有意义的话,请动动手指,分享给朋友一起来共同学习进步。


欢迎关注本人如下公众号 “产品技术知与行” ,打造全面的结构化知识库,包括原创文章、免费课程(C#,Java,Js)、技术专题、视野知识、源码下载等内容。

微信公众号
扫描二维码关注

回到目录,再看看相关文章

版权声明
本文为[圣殿骑士18]所创,转载请带上原文链接,感谢
https://www.cnblogs.com/holyknight17/p/10419922.html

编程之旅,人生之路,不止于编程,还有诗和远方。
阅代码原理,看框架知识,学企业实践;
赏诗词,读日记,踏人生之路,观世界之行;