[《.net框架程序设计》]第十五章 接口

原创 2004年07月13日 15:39:00

第十五章 接口

摘要:<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />

   接口的应用及完全限定名方式定义接口的应用。

 

一、 接口与继承

l C#支持单实现继承和多接口继承

l 接口中可以定义:事件、无参属性(属性)、含参属性(索引器);C#不允许接口定义任何静态成员(CLR却允许定义静态成员);CLR不允许接口定义实例字段和构造器。

l 缺省为public abstract 方法,但不可用任何修饰符进行修饰(包括public

l 将值类型转换为接口类型(假设其实现了某个接口),则值类型被装箱为引用类型,以调用其中的接口方法。

 

实现接口继承或实现继承的原则:

l 存在IS-A关系使用实现继承,存在CAN-DO关系使用接口继承

l 实现继承可继承父类型的实现,由于接口中没有定义方法的实现,因此继承后必须实现方法

l考虑到每个人对接口实现的不同,使用实现继承可同一部分功能的实现

l 为父类型添加方法可能不影响使用继承自该类型实现的用户,而为接口添加方法导致用户必须为新方法添加实现

二、 利用接口改变已装箱类型中的字段

    实际上是将已装箱类型转型为接口类型,然后通过调用方法进行值改变。

因为对已装箱类型进行拆箱到原值类型将在堆栈上声称新的值类型,调用这个新的值类型的方法不能改变以装箱类型的值。

 

三、 实现多个有相同方法的接口

使用 接口名.方法名 的形式声明实现了那个接口的方法。成为 完全限定接口名,这样定义的方法被认为是私有方法,不能使用类型本身调用;当将类型转换为接口类型时,完全限定接口名定义的方法又变成一个公有方法。(比较奇特,也很有用);使用完全限定接口名定义的方法不能使用任何访问修饰符。

 

四、显示接口成员实现

    问题的提出:通常接口接受的参数为Object,这样的参数非强类型安全的,可能需要在我们自定义类型的接口实现中定义强类型安全的方法,同时也需要实现“接口合同”

    问题解决:通过上面的完全限定接口名方式定义接口方法,可达到这样的效果。

   优点:获得强类型支持,可在编译期发现类型不匹配问题,而不是到运行期。同时,调用自定义的方法不必进行装箱操作,提高了效率。

    缺点:由于我们在类型中隐藏了接口实现(必须将转型为接口才能暴露出接口定义的方法),因此可能对使用造成不便,因此应该慎用该方法。

.NET框架程序设计——体系结构

谈到.NET,相信对于大多数初学者而言,都会感觉比较乱、比较迷茫,什么ASP.NET、VB.NET、VC.NET、ADO.NET、.NETFramework 等等概念,搞的我们晕头转向的,他们之间到底...
  • dongyue786
  • dongyue786
  • 2014年10月15日 15:47
  • 1933

面向接口编程详解

面向接口编程详解(一)——思想基础  我想,对于各位使用面向对象编程语言的程序员来说,“接口”这个名词一定不陌生,但是不知各位有没有这样的疑惑:接口有什么用途?它和抽象类有什么区别?能不能用...
  • chinaliping
  • chinaliping
  • 2013年07月19日 11:25
  • 2360

vb.Net程序设计(一)——其实不太懂

背景:     前天vb.Net视频就已经看完了,可是总是懒懒的,不想去总结。其实原因不只是自己懒,还有就是自己看完视频后感觉没有学到什么东西,看完后最强烈的感觉就是台湾的时间比大陆的时间走得慢,一集...
  • u013043341
  • u013043341
  • 2015年02月11日 16:41
  • 1290

Asp.net WebAPI 构建后台数据接口

1.新建项目 2.选择WebApi,并使用空模板(这里不想要一些其他的mvc的东西)3.新建一个model4.写几个属性using System; using System.Collections....
  • qq_19678579
  • qq_19678579
  • 2017年07月10日 15:33
  • 1271

MockNet -- Android网络接口开发与测试神器

本文为转载,原作者:ZY5A59  大写加粗的指出原文地址:http://www.jianshu.com/p/3b04d5198fcb 我只是小小的搬运工哦 CatRuan(阮妹子)  ...
  • u011791526
  • u011791526
  • 2017年06月21日 09:34
  • 461

【VB.NET程序设计】——总结篇

.net的视频算是结束了,写个总结,看看收获! 整个视频学下来的感觉,和之前学习《数据库》和《信管》里边的程序设计流程很相似,感觉像是一个系列,看 看思维导图: 里边的数字,是看.net视频...
  • u011626283
  • u011626283
  • 2015年01月24日 11:17
  • 1812

抽象类与接口的区别及应用

抽象类与接口的区别及应用 (本文由张洋提供) 抽象类(Abstract Class)与接口(Interface)是面向对象程序设计中两个重要的概念。由于两者在自身特性及应用方法上存在诸多相...
  • shuyeshangdemayi
  • shuyeshangdemayi
  • 2016年04月21日 10:18
  • 251

[.net 面向对象程序设计深入](26)实战设计模式——使用IoC模式(控制反转或依赖注入)实现松散耦合设计(1)

1,关于IOC模式  先看一些名词含义: IOC: Inversion of control 控制反转,简称 DI: Dependency Injection 依赖注入,简称 ...
  • duzanuolu
  • duzanuolu
  • 2017年03月18日 17:12
  • 186

第十五章 面向对象程序设计

面向对象程序设计(object-oriented programming)的核心思想是数据抽象、继承和动态绑定。 C++11 标准允许派生类显示地注明它将使用哪个成员函数改写基类的虚函数,具体措施是...
  • u011729425
  • u011729425
  • 2015年05月27日 18:05
  • 301

算法导论 第二十五章:每对顶点间的最短路径

Floyd-Warshall 算法    设G的顶点为V={1,2,...,n},对于每个k考虑顶点的一个子集{1,2,...,k}。对于任意一对顶点i,j ∈ V,考察 从i到 j 且中间顶点皆属...
  • u010183397
  • u010183397
  • 2015年07月21日 00:49
  • 537
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:[《.net框架程序设计》]第十五章 接口
举报原因:
原因补充:

(最多只允许输入30个字)