C# 类 - 接口 Interface

Posted springbrotherhpu

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C# 类 - 接口 Interface相关的知识,希望对你有一定的参考价值。

Interface

接口 类似 抽象类,也不能被实例化。。。(前面说的静态类,加上抽象类,还有这个,都3个了)
接口其实比 抽象类 更加抽象。接口的方法(这个方法还不能有实体代码,和抽象类的抽象方法差不多)
接口也支持属性Properties Indexersevents(还记得属性吗?前面的支持 get 和 set 方法的一个东东)
由于C#不支持多继承,当一个类的:后面接了多个name,这些name其实都是接口
看图 ,首先建造一个 纯Dog的list,添加3条狗,然后对狗狗进行名字排序后输出Describe方法的内容,这里涉及到两个操作,排序和输出
技术图片

看看接口是如何调用的
技术图片

这里定义了一个接口IAnimal(约定俗成的,接口一般都用I开头,做到看名知意), 它有一个Name属性,一个Describe方法
然后开始定义Dog类,继承了两个(这里不能继承两个类,因为C#不支持多继承,只能继承接口了,继承的接口可以写多个)
从第一个接口继承的Describe 方法,在Dog里 重构成了返回狗狗的Name
从第二个接口继承的CompareTo方法,在Dog里 重构成了 返回两个狗狗的Name排序结果
技术图片

注意到了没,我们在接口的方法里 没用到 Visibility 的限定词,像privatepublicproteced 等等,因为在接口里这些是不允许的,对于接口而言,都是public,任何人都能访问

我们从接口继承后,跟我们从 class继承的方式,很类似,都是继承呀,重构呀


附上原文的解释
技术图片

为啥能给狗排序?因为狗有CompareTo方法
为啥数组能知道狗狗能排序并且知道调用哪个函数给狗排序? 因为我们给狗狗设置了带有 CompareTo方法的接口,这个方法是.Net自动为排序设置的一个接口方法

?

以上是关于C# 类 - 接口 Interface的主要内容,如果未能解决你的问题,请参考以下文章

C# 类 - 接口 Interface

C#中接口和抽象类的区别

抽象类的 C# 接口继承

C#:抽象类需要实现接口吗?

C#[抽象类,接口]

C#接口