C#接口详解及实例应用分析

上传人:ss****gk 文档编号:209181495 上传时间:2021-11-09 格式:DOC 页数:7 大小:79.50KB
返回 下载 相关 举报
C#接口详解及实例应用分析_第1页
第1页 / 共7页
C#接口详解及实例应用分析_第2页
第2页 / 共7页
C#接口详解及实例应用分析_第3页
第3页 / 共7页
C#接口详解及实例应用分析_第4页
第4页 / 共7页
C#接口详解及实例应用分析_第5页
第5页 / 共7页
点击查看更多>>
资源描述

《C#接口详解及实例应用分析》由会员分享,可在线阅读,更多相关《C#接口详解及实例应用分析(7页珍藏版)》请在金锄头文库上搜索。

1、c#接口定义是什么呢? c#接门定义相关的一些内容是什么? c#接门定义的学习需要 注意什么呢?那么本文就向你详细介绍这些内容。C#接口定义是什么呢?其实,C#接口定义的就是一种约定,使得实现接口的类或结 构在形式上保持一致。个人觉得,使用接口可以使程序更加清晰和条理化,这就是 接口的好处,但并不是所有的编程语言都支持接口,C#是支持接口的。注意,虽然 在概念上,C#接口类似于COM接门,但他们的底层结构是不同的。那么,我们来 看一下如何声明和使用接口。C#接口定义之声明接口声明接口在语法上和声明抽象类完全相同,例如这里有一个银行账户的接口:1. public interface IBankA

2、ccount2. 3. void Payln(decimal amount);4. boo I Withdraw(d ecimal amount);5.5. decima I Balance6. 7. get;8. 9. 注意:接口中只能包含方法、属性、索引器和事件的声明。不允许声明成员上的修 饰符,即使是pubilc都不行,因为接门成员总是公有的,也不能声明为虚拟和静态 的。如果谣要修饰符,最好让实现类來声明。C#接口定义之使用接口的实例:这是书上的一个简单的例子,但足以说明接口的使用方法。一个银行账户的接口,两个不同银行账户的实现类,都继承于这个接口。接口声明 如上。下面是两个账户类:10

3、. class SaverAccount: IBankAccount13. priv ate decimal balance;14.14. publicdecimaI Balance15. 16. get17. 18. returnbalance;19. 20. 21. p ublic void Payln(decimal amount)22. 23. balance += amount;24. 25. public bool Withdraw(de cimal amount)26. 27. if (balance = amount)28. 29. balance -= amount;30.

4、return true;31. 32. Console.WriteLine(Withdra w failed.);33. return fa I se;34. 35. pub lie override string ToString()36. 37. r eturn String.Format(HVen us Bank Save r:Balance=0 ,6:C, balance);38. 39. 40. class GoldAccount: IBankAccount41. 42. private d ecimal balance;43. public decimal Balance44. 4

5、5. get46. 47. return balance;48. 49. 50. public void Payln(decimal amount)51. 52. balance += amount;53. 54. publ ic bool Withdraw(decimal amount)55. 56. if (balance = amount)57. 58. balance -= amount;59. return true;60. 61. Console.WriteLine(Withdraw fai led.);62. ret urn false;63. 64. public o verr

6、ide stri ng ToStringO65. 66. returnString.Format(67. Jupite rBank Saver:Balance=0,6:C, balance);68. 69. 可见,这两个实现类多继承了 IBankAccount接口,因此它们必须要实现接口中的所 有声明的方法。要不然,编译就会出错。让我们来测试一下,下面是测试代码:70. Main static void (string args)71. 72. IBankAccount venusAccount = new SaverAccount();73. IBankAccount jupiterAcco

7、unt = new CurrentAccount();74. venusAccount.Payln(200);75. jupiterAccount.Payln(500);76. Console.WriteLine(venusAccount.ToStringO);77. jupiterAccount.Payln(400);78. jupiterAccount.Withdraw(500);79. jupiterAccount.Withdraw(lOO);80. Console.WriteLine(jupiterAccount.ToStringO);81. 请注意开头两句,我们把它们声明为IBank

8、Account引用的方式,而没有声明为类的 引用,为什么呢?因为,这样我们就可以让它指叫执行这个接口的任何类的实例了, 比较灵活。但这也有个缺点,如果我们要执行不属于接口的方法,比如这里重载的 ToStringO方法,就要先把接口的引用强制转换成合适的类型了。C#接口定义之接口的继承接口也可以彼此继承,就象类的继承一样。比如我们又声明一个接口ITransferBankAccount,仑继承于 IBankAccount 接口。82. in terface ITransferBankAccount: IBankAccount83. 84. bool TransferTo(IBankAccountd

9、estination, decim al amount);85. 在这个接口中,又新增加了一个方法TnnsferToO,所以如果我们要写一个类从 ITransferBankAccount 继承的话,就必须要实现IBankAccount 和 ITransferBankAccount两个接门所有的方法声明。即:86. class CurrentAccount: ITransferBankAccount87. 88. private de cimal balance;89. public decimal Balance90. 91. get93.94.return balance;95.96.97.

10、public vo id Payln(dec imal amount)98.99.balance += amount;100.101.public bool Withdraw(decimal amount)102.103.if (balance = amount)104.105.balance -= amount;106.ret urn true;107.108.Console.WriteLine(Wit hdraw failed109.return false;110.111.public overr ide string ToStringO112.113.return String.For

11、mat(114.Jupiter Ba nk Saver:Bal ance=0,6:C,/ balance)115.116.public bool TransferTo(117.IBankAccount destination, dec imal amount)118.119.if (Withdraw(amount)120.121.destination.Payln(amount);122.r eturn true;123.124.else125. 126. return fa Is e;127. 128. 129. C#接口定义的一些总结:1、C#中的接口是独立于类来定义的。这与C+模型是对立

12、的,在C+中接口实呩上 就是抽象基类。2、接口和类都可以继承多个接口。3、类可以继承一个基类,接口根本不能继承类。这种模型避免了 C+的多继承问 题,C+中不同基类中的实现可能出现冲突。因此也不再需要诸如虚拟继承和显式 作用域这类复杂机制。C#的简化接口模型有助于加快应用程序的开发。4、一个接口定义一个只有抽象成员的引用类型。C#中一个接口实际所做的,仅仅 只存在着方法标志,但根本就没有执行代码。这就暗示了不能实例化一个接U,只 能实例化一个派生ft该接口的对象。5、接口可以定义方法、属性和索引。所以,对比一个类,接口的特殊性是:当定 义一个类时,可以派生自多重接口,而你只能可以从仅有的一个类

13、派生。转:http:/dev eloper.51cto .com 二、详解C#接U定义和继承的区别C財妾口定义C#不支持多重继承,但是客观世界出现多重继承的情况又比较多。为了避免传统 的多重继承给程序带来的a杂性等问题,c#提出了接口的概念。通过接口可以实 现多重继承的功能。实现接口的类或结构要与接U的定义严格一致。接L1描述可属于任何类或结构的 一组相关行为。接口可由方法、属性、事件、索引器或这4种成员类型的任何组合 构成。接口不能包含字段。接口成员一定是公共的。类和结构可以像类继承基类或结构一样从接口继承,而且可以继承多个接口。当 类或结构继承接口吋,它继承成员定义但不继承实现。若要实现接

14、口成员,类中的 对应成员必须是公共的、非静态的,并且与接LI成员具有相同的名称和签名。类的 属性和索引器可以为接口上定义的属性或索引器定义额外的访问器。例如,接口付 以声明一个带有get访问器的属性,而实现该接口的类可以声明同时带有get和set访问器的同一属性。但是,如果属性或索引器使用显式实现,则访问器必须匹配。 接口可以继承其他接口。类可以通过其继承的基类或接门多次继承某个接门。在这种情况下,如果将该接口声明为新类的一部分,则类只能实现该接口一次。如果 没有将继承的接口声明为新类的一部分,其实现将由声明它的基类提供。基类付以 使用虚拟成员实现接口成员,在这种情况下,继承接口的类可通过重写虚拟成员来 更改接口行为。定义接门接LI的声明采用下列格式:修饰符interface接口名称:继承的接口列表 接口內容;其中,除interface和接口名称,其他的都是可选项,下面是一个C#接口定义的 例子,代码如下:public interface iSomelnterface void UpdateDataBase();接口继承一个接口可以从一个或多个基接口继承。例如:interface iOthrerlnterface :iSomelnterface,iCom int CompareTo(object obj);

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 办公文档 > 其它办公文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号