- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
* 接口的英文:Interface * * * * 接口的英文:Interface * * * * * * * 接口的英文:Interface * * 第3章 C#面向对象编程 接口 * 接口声明 接口成员 接口实现及继承 ★ 什么是接口 重点 接口的使用方法 如何使用实现了某接口的对象 如何继承多个接口 接口与抽象类的比较 问 题 * 如老师和学生都会开车, 那么开车的方法应该放在哪个类? A:Teacher类 B:Student类 C:两个都放 D:Person类 E:重新定义 造成代码冗余 如果增加一个工人类,他不会开车。 如果继承这个类,Person类怎么办? 调用会开车的方法不需要改变 自定义一个接口来实现IDrivingLicence 什么是接口 * 接口是引用类型,是一系列需要实现的功能的定义。 接口类似于抽象基类,接口不能实例化 接口成员包括: 方法 属性 索引器 事件 类和结构可以继承多个接口,接口本身可以继承多个接口 合同、契约、协议 如何使用接口?? * 接口声明 接口声明的基本形式如下: [接口修饰符] interface 接口名 [: 基接口] { 接口体 } 一般为public 注意:建议接口名以大写字母I开头 接口如果声明在namespace中,则只能用public修饰 默认为internal,不能用其他访问修饰符 接口不存储数据,所有没有字段 接口中声明的所有成员隐式地为public和abstract 只能是接口 例8.7 计算显示框的长和宽 自定义接口 * interface IPersonalIncome { double Income { get; } void DisplayIncome( ); } class Manager : Employee, IPersonalIncome //学生收入的实现方式 public double Income { get { return subvention + scholarship + grants; } } public void DisplayIncome() { Console.WriteLine({0},是一名学生,总收入{1}, name, Income); } 1、定义一个收入的接口 2、在能计算收入的类实现该接口 3、不同的类计算的方式不同 //经理收入的实现方式 public double Income { get { return Salary + Bonus; } } public void DisplayIncome() { Console.WriteLine({0},是一名经理,总收入{1}, Name, Income); } 接口 * 接口声明 接口成员 接口实现及继承 ★ 接口和抽象类的区别 * 接口的方法成员 接口成员 接口成员声明不能包含任何修饰符 只能包含成员的签名(返回值类型+方法名+参数列表) 不能包含任何静态成员 public * 接口属性成员 属性可以在接口中声明: 不能加修饰符 属性的访问器没有方法体 只是通过get和set指定属性的访问类型 * 接口索引器成员 语法格式: 不能加修饰符 属性的访问器没有方法体 数据类型 this[索引参数表]{get; 或set;}; 接口 * 接口声明 接口成员 接口实现及继承 ★ * 接口实现 要实现一个接口,需要声明一个类或结构,让它们从接口继承,并实现接口指定的全部方法 接口的实现类可以是派生类或派生类的子类,并且这些派生类可以包括一些自己特有的类成员。 接口的实现如下: [修饰符] class 类名:基类,接口1,接口2 { 类体 } 实现接口的成员 必须和接口成员有相同的签名 不能加override 如何使用实现了某接口的对象? 使用自定义接口 * 1、接口作为参数使用 public void Test ( IPersonalIncome income) { income.DisplayIncome(); } 无论是哪中类型的对象,这里都不需要变化 2、接口作为返回值使用 Test( new Manager (张三,30,3000,3000) ); private IPersonalInc
文档评论(0)