C#chap7_2

上传人:油条 文档编号:27096731 上传时间:2018-01-07 格式:PPT 页数:18 大小:497.50KB
返回 下载 相关 举报
C#chap7_2_第1页
第1页 / 共18页
C#chap7_2_第2页
第2页 / 共18页
C#chap7_2_第3页
第3页 / 共18页
C#chap7_2_第4页
第4页 / 共18页
C#chap7_2_第5页
第5页 / 共18页
点击查看更多>>
资源描述

《C#chap7_2》由会员分享,可在线阅读,更多相关《C#chap7_2(18页珍藏版)》请在金锄头文库上搜索。

1、C#程序设计,(续),接口是用来定义一种程序的协定。接口好比一种模板,这种模板定义了实现接口的对象必须实现的方法,其目的就是让这些方法可以作为接口实例被引用。public interface IPartA void SetDataA(string dataA);public interface IPartB:IPartA /接口之间可以继承 void SetDataB(string dataB);,接口与继承,接口与继承,使用接口时要注意:接口使用关键字interface定义;定义接口允许使用的修饰符有:new、public、protected、internal、private等。在一个接口定

2、义中同一修饰符不允许出现多次,new修饰符只能出现在嵌套接口中,表示覆盖了继承而来的同名成员。 public, protected, internal和 private修饰符定义了对接口的访问权限。 接口的命名通常以I开头。接口的成员可以是方法、属性、索引器和事件,接口不能包含常数、字段、操作符、实例构造函数、析构函数或类型,也不能包含任何种类的静态成员,也不能在接口中实现接口成员。,demo3.cs,接口与继承,使用接口时要注意:接口不能被实例化。接口成员默认访问方式是public。接口成员定义不能包含任何修饰符,比如成员定义前不能加abstract,public,protected,int

3、ernal,private,virtual,override 或static 修饰符。,demo3.cs,接口与继承,使用接口时要注意:接口之间存在继承关系。接口中定义的方法要由继承接口的类或结构来完成。接口允许多继承。 interface ID:IA,IB,IC 类可以同时有一个基类和零个以上的接口,并要将基类写在前面。 class ClassB:ClassA,IA,IB ,接口与继承,接口的实现接口的实现指出接口成员所在的接口,则称为显式接口成员。例demo3中对接口成员的实现可改写成:void IPartA.SetDataA(string dataA) DataA=dataA; Cons

4、ole.WriteLine(0,DataA); void IPartB.SetDataB(string dataB) DataB=dataB; Console.WriteLine(0,DataB);,接口与继承,接口的实现显式接口成员只能通过接口来调用: class test static void Main() SharedClass a=new SharedClass(); IPartB partb=a; partb.SetDataA(interface IPartA); partb.SetDataA(interface IPartB); ,接口与继承,接口和抽象类public abstr

5、act class Shape public abstract double GetArea(); public interface IShape double GetArea();public class Circle : Shape, IShape protected double r; public override double GetArea() return 3.14*r*r; double IShape.GetArea() return 3.1416*r*r; ,接口与继承,接口和抽象类(共同点)都不能被实例化;接口中的方法和抽象类中的抽象方法都不提供实现代码;派生类必须继承所有

6、 接口方法/抽象方法非抽象派生类必须实现所有 接口方法/抽象方法,接口与继承,接口和抽象类(不同)接口中方法无实现代码,抽象类的非抽象方法有接口不能有字段成员,抽象类可以有字段成员类可以继承多个接口,但只能继承一个抽象类,接口与继承,在实际程序设计中,如果某个概念是对一组具体事物的抽象,而这些事物需要维护相同类型的数据、或是对某些行为有着共同的实现。则可以将这个概念建模为一个抽象类。 public abstract class BankAccount protected string m_id; protected decimal m_amount; public virtual void Q

7、uery() Console.WriteLine(“账号0:余额1”,m_id,m_amount; public abstract Deposit(decimal x); public abstract Withdraw(decimal x);,接口与继承,如果某个概念只是用于描述一个或多个特性,这些特性刻画了事物“应做什么”或“能做什么”,而并未说明事物“应该怎么做”,那么可以将这个概念建模为一个接口。 public interface IPayable bool Pay(decimal x); public class SavingAccount:BankAccount pulblic c

8、lass BankCard:BankAccount,IPayable pulblic class CreditCard:BankAccount pulblic class Cheque:IPayable ,接口与继承,接口方法调用Circle c = new Circle();double x = c.GetArea();x = (Shape)c).GetArea();x = (IShape)c).GetArea();,public abstract class Shape public abstract double GetArea(); public interface IShape do

9、uble GetArea();public class Circle : Shape, IShape protected double r=2; public override double GetArea() return 3.14*r*r; double IShape.GetArea() return 3.1416*r*r; ,P7_7.cs,接口与继承,常用接口ICollectionIListICompareIEnumerableIEnumeratorIDictionary参照P173 表7.1,类的修饰符和方法的修饰符总结,类的修饰符,类的修饰符和方法的修饰符总结,方法的修饰符,类的修饰符和方法的修饰符总结,修饰符的无效组合,本章小结,(1)封装、继承和多态性是面向对象程序设计的三个基本要素。其中继承是面向对象的程序设计中实现可重用性的关键技术。(2)C#提供了一整套良好的继承机制,包括派生类对基类和接口的继承,成员的继承、覆盖和重载。(3)通过对基类虚方法的重载,程序可在运行时根据实际对象的类型确定要执行的操作,从而实现多态性。(4)在C#中,抽象类不能被创建实例,密封类不允许被继承,密封方法不允许被重载。(5)接口是抽象程度更高的一种数据类型,接口方法和抽象方法都属于协议描述的范围,它们都需要在派生成员中的到具体的实现。,

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 行业资料 > 其它行业文档

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