- 热门文章:
- · 第十四章 数组[《.net框架程序设计》读书笔记]
- · 第十三章 枚举类型与位标记[《.net框架程序设计》读书笔记]
- · 第十二章 委托[《.net框架程序设计》读书笔记]
- · 第十一章 事件[《.net框架程序设计》读书笔记]
- · 第十章 属性[《.net框架程序设计》读书笔记]
- · 第九章 方法[《.net框架程序设计》读书笔记]
- · 第八章 常数与字段[《.NET框架程序设计》读书笔记]
- · 第七章 类型成员及其访问限定[《.NET框架程序设计》读书笔记]
- · 手工修改动网新闻.net3.0的Bug
- · .net的MSMQ异步调用
- · 关于《.net框架程序设计》读书笔记
- · 前言[《.net框架程序设计》读书笔记]
上一篇:在.Net1.2中对Xquery的支持 >>
第十五章 接口[《.net框架程序设计》读书笔记]
摘要:
接口的应用及完全限定名方式定义接口的应用。
一、 接口与继承
l C#支持单实现继承和多接口继承
l 接口中可以定义:事件、无参属性(属性)、含参属性(索引器);C#不允许接口定义任何静态成员(CLR却允许定义静态成员);CLR不允许接口定义实例字段和构造器。
l 缺省为public abstract 方法,但不可用任何修饰符进行修饰(包括public)
l 将值类型转换为接口类型(假设其实现了某个接口),则值类型被装箱为引用类型,以调用其中的接口方法。
实现接口继承或实现继承的原则:
l 存在IS-A关系使用实现继承,存在CAN-DO关系使用接口继承
l 实现继承可继承父类型的实现,由于接口中没有定义方法的实现,因此继承后必须实现方法
l 考虑到每个人对接口实现的不同,使用实现继承可同一部分功能的实现
l 为父类型添加方法可能不影响使用继承自该类型实现的用户,而为接口添加方法导致用户必须为新方法添加实现
二、 利用接口改变已装箱类型中的字段
实际上是将已装箱类型转型为接口类型,然后通过调用方法进行值改变。
因为对已装箱类型进行拆箱到原值类型将在堆栈上声称新的值类型,调用这个新的值类型的方法不能改变以装箱类型的值。
三、 实现多个有相同方法的接口
使用 接口名.方法名 的形式声明实现了那个接口的方法。成为 完全限定接口名,这样定义的方法被认为是私有方法,不能使用类型本身调用;当将类型转换为接口类型时,完全限定接口名定义的方法又变成一个公有方法。(比较奇特,也很有用);使用完全限定接口名定义的方法不能使用任何访问修饰符。
四、 显示接口成员实现
问题的提出:通常接口接受的参数为Object,这样的参数非强类型安全的,可能需要在我们自定义类型的接口实现中定义强类型安全的方法,同时也需要实现“接口合同”
问题解决:通过上面的完全限定接口名方式定义接口方法,可达到这样的效果。
优点:获得强类型支持,可在编译期发现类型不匹配问题,而不是到运行期。同时,调用自定义的方法不必进行装箱操作,提高了效率。
缺点:由于我们在类型中隐藏了接口实现(必须将转型为接口才能暴露出接口定义的方法),因此可能对使用造成不便,因此应该慎用该方法。
下一篇:第十四章 数组[《.net框架程序设计》读书笔记] >>
相关文章:
- · 发布一个通用面板程序(htc)
- · .Net 实现纳秒级别计算
- · 快速理解.NET Framework[翻译]
- · .NET框架程序设计读书笔记(三)--.net框架类库(FCL)和通用类型系统、代码互操作
- · NET框架程序设计读书笔记(三)--执行程序集代码
- · 动态加载树----treeView
- · 在Internet上用通过.Net Remoting机制实现服务器对客户端的直接调用
- · .NET中的强名称机制
- · .NET中的GAC
- · .net框架程序设计读书笔记二(Microsoft .net 框架开发平台体系架构)
- · .net 框架程序设计 读书笔记(一)---.net 平台构成
- · .NET中的版本号
- · Win32类型和.net类型的对应表
- · 实战 .Net 数据访问层 - 1
- · 基于.Net的AOP实现技术
- · 非常了不起的工具iNET----------帮你实现.NET项目跨平台运行.
- · 服务器端异步 Web 方法
- · Prototype设计模式的实现
- · 用WinDbg探索CLR世界 [3] 跟踪方法的 JIT 过程
- · .net+oracle+crystalReports开发web应用程序学习笔记(二)
- · 使用.net Remtoing进行并行计算
- · 我的O/R Mapping实际开发经验之谈(二)
- · 走近COM Interop——RCW入门
- · 基于Grove的.NET应用程序开发提示
- · datagrid的正反双向排序
- · DataGrid在分页状态下删除纪录的问题
- · 未找到路径“D:\”的一部分 的问题解决
- · 在下拉列表框中显示多列的两种简易实现方式
- · .NET 1.1中预编译ASP.NET页面实现原理浅析 [1] 自动预编译机制浅析
- · IEWebControl TreeView右键菜单实例
- · 正则表达式测试程序
- · 创建插件框架(2)
- · 创建插件框架(1)
- · 来自开源社区的声音: .NET vs JAVA
- · .net下分层架构系统的开发技术规范(2)
- · 在.NET 中模拟提交Post数据
- · 以武學的視角來戲說.NET程序員的倚天之術
- · XP方法学习总结及对小组开发的思考
