博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
c#接口
阅读量:6901 次
发布时间:2019-06-27

本文共 3426 字,大约阅读时间需要 11 分钟。

接口描述的是类或结构所描述的一组相关功能。

所以继承此接口的类或结构必须实现接口中定义的所有成员。

接口使用interface关键字进行声明,成员可以为属性,方法,索引,事件。

接口的特性:

  1)、接口类似与抽象类,不能实例化,实现接口的任何非抽象类都必须实现接口的所有成员:

             当显示实现成员时,实现成员不能通过类的对象访问,只能通过接口实例访问。

             当隐示实现成员时,可以通过类和接口的实例访问,但是实现成员须是public。

  2)、接口不能包含字段,常量,构造函数,析构函数和静态成员等。

  3)、接口成员是公开的,且不需要任何的访问修饰符。

  4)、接口,类和结构都可以继承多个接口。

1 interface IProgram 2     { 3         void Fun(); 4     } 5  6     class Program : IProgram 7     { 8         //显示接口实现 9         void IProgram.Fun()10         {11             Console.WriteLine("i am fun.");12         }13         static void Main(string[] args)14         {15             IProgram i = new Program();//声明一个接口,但不是对接口实例化16             i.Fun();17             Console.ReadKey();18         }19     }

隐式接口与显示接口实现的区别:

 一般当类和结构实现单个接口时使用隐式接口。

而当要实现多个接口时,且接口中含有同名函数时就需要使用显示接口。且使用了显示接口隐式接口就失效了。

1  interface IProgram 2     { 3         void Fun(); 4     } 5     interface IAPrograme{ 6      void Fun(); 7     } 8     class Program : IProgram,IAPrograme 9     {10         //显示接口实现11         void IProgram.Fun()12         {13             Console.WriteLine("i am IProgram fun.");14         }15          void IAPrograme.Fun(){16              Console.WriteLine("i am IAPrograme fun.");17         } 18         //实现隐式接口19          //void Fun() { 20           21          //}22         static void Main(string[] args)23         {24             Program p = new Program();25             ((IProgram)p).Fun();26             ((IAPrograme)p).Fun();27             Console.ReadKey();28         }29     }

接口的继承:

接口的继承指的是继承的父接口的所有成员,但是还是没有实现。且允许多继承。

1 interface IProgram 2     { 3         void Fun(); 4     } 5     interface IAPrograme : IProgram 6     { 7  8     } 9     class Program : IProgram, IAPrograme10     {11         //显示接口实现12         void IProgram.Fun()13         {14             Console.WriteLine("i am IProgram fun.");15         }16         //void IAPrograme.Fun()17         //{18         //    Console.WriteLine("i am IAPrograme fun.");19         //}20         //实现隐式接口21         //void Fun() { 22 23         //}24         static void Main(string[] args)25         {26             Program p = new Program();27             //((IProgram)p).Fun();28             ((IAPrograme)p).Fun();29 30             Console.ReadKey();31         }32     }

接口的覆盖:

1  interface IProgram 2     { 3         void Fun(); 4     } 5     abstract class IAProgram : IProgram 6     { 7         abstract public void AFun(); 8         void IProgram.Fun() 9         {10             AFun();11         }12     }13     class Program : IAProgram14     {15      16         public override void AFun()17         {18             Console.WriteLine("i am AProgram fun.");19         }20         static void Main(string[] args)21         {22             IProgram p = new Program();23             //((IProgram)p).Fun();24             p.Fun();25 26             Console.ReadKey();27         }28     }

先进行接口的实现,然后再调用抽象函数。

接口和抽象类的区别。

接口用于规范,抽象类用于共性。
接口中只能声明方法,属性,事件,索引器。而抽象类中可以有方法的实现,也可以定义非静态的类变量。
抽象类是类,所以只能被单继承,但是接口却可以一次实现多个。
抽象类可以提供某些方法的部分实现,接口不可以。
抽象类的实例是它的子类给出的。接口的实例是实现接口的类给出的。
在抽象类中加入一个方法,那么它的子类就同时有了这个方法。而在接口中加入新的方法,那么实现它的类就要重新编写(这就是为什么说接口是一个类的规范了)。
接口成员被定义为公共的,但抽象类的成员也可以是私有的、受保护的、内部的或受保护的内部成员(其中受保护的内部成员只能在应用程序的代码或派生类中访问)。
此外接口不能包含字段、构造函数、析构函数、静态成员或常量。
C#中的接口和类有什么异同。
异:
不能直接实例化接口。
接口不包含方法的实现。
接口可以实现多继承,而类只能是单继承。
类定义可在不同的源文件之间进行拆分。
同:
接口、类和结构可从多个接口继承。
接口类似于抽象基类:继承接口的任何非抽象类型都必须实现接口的所有成员。
接口可以包含事件、索引器、方法和属性。
一个类可以实现多个接口。

转载于:https://www.cnblogs.com/tanzhen/p/4097613.html

你可能感兴趣的文章
FeatureSelectors
查看>>
数据库防火墙DBShield安装
查看>>
sudo with no password
查看>>
Windows 局域网ping获取设备IP
查看>>
使用蓝图来扩展编辑器
查看>>
USACO题目——Transformations
查看>>
除了 UCAN 发布的鹿班和普惠体,这些设计工具也来自阿里
查看>>
转载----Python正则表达式指南
查看>>
.Net使用system.Security.Cryptography.RNGCryptoServiceProvider类与System.Random类生成随机数
查看>>
HDU 1394 Minimum Inversion Number 线段树
查看>>
Java 集合系列04之 fail-fast总结(通过ArrayList来说明fail-fast的原理、解决办法)
查看>>
ssm框架整合
查看>>
C/C++里自带提供的整数进制转换的几种方式(转载)
查看>>
JAVA类加载顺序
查看>>
数据结构复习
查看>>
JSONPlaceholder - 免费的在线REST服务(提供测试用的HTTP请求假数据)
查看>>
今天购买了一个云服务器
查看>>
C#以管理员身份运行程序
查看>>
关于学习uCOS-II
查看>>
BZOJ3572:[HNOI2014]世界树——题解
查看>>