《C#面向对象程序设计 第2版 教学课件 ppt 作者 郑宇军 CSCH10》由会员分享,可在线阅读,更多相关《C#面向对象程序设计 第2版 教学课件 ppt 作者 郑宇军 CSCH10(22页珍藏版)》请在金锄头文库上搜索。
1、1,第10章 基于接口的程序设计,纲要,接口的定义和使用 接口与多态 接口和多继承 接口与集合,2,3,接口,抽象类,类,4,接口的定义和使用,定义,public interface IDrawable bool Draw(decimal money); ,无实现代码,5,接口的定义和使用,定义 继承,public interface IDrawable bool Draw(decimal money); public interface IDepositDraw : IDrawable bool Deposit(decimal money); ,6,接口的定义和使用,定义 继承 实现 隐式实
2、现,public interface IDrawable bool Draw(decimal money); public class BankAccount : IDrawable private decimal balance = 1000; public bool Draw(decimal money) if(balance = money) balance -= money; return true else return false; ,公有成员,7,接口的定义和使用,定义 继承 实现 隐式实现 显式实现,public interface IDrawable bool Draw(de
3、cimal money); public class BankAccount : IDrawable private decimal balance = 1000; bool IDrawable.Draw(decimal money) if(balance = money) balance -= money; return true else return false; ,私有成员,8,接口与多态,基于接口的多态性,public interface IPayable bool Pay(decimal money); public class BankAccount : IPayable pri
4、vate decimal balance = 1000; public virtual bool Pay(decimal money) . ,9,接口与多态,基于接口的多态性,public interface IPayable bool Pay(decimal money); public class BankAccount : IPayable private decimal balance = 1000; public virtual bool Pay(decimal money) . public class CreditCard : BankAccount public overrid
5、e bool Pay(decimal money) . ,10,接口与多态,区分对象方法和接口方法,public interface IPayable bool Pay(decimal money); public class BankAccount : IPayable private decimal balance = 1000; public virtual bool Pay(decimal money) . bool IPayable.Pay(decimal money) . public class CreditCard : BankAccount public override b
6、ool Pay(decimal money) . ,11,Demo: Bank/ CreditCard,12,接口与多继承,BankAccount,Payer,CreditCard,13,接口与多继承,BankAccount,CreditCard,IPayable,14,接口与多继承,BankAccount,CreditCard,IPayable,CreditCard,IGlobalPayable,15,接口与多继承,解决二义性,public class CreditCard : BankAccount, IPayable public override bool Pay(decimal mo
7、ney) . ,继承基类成员,16,接口与多继承,解决二义性,public class CreditCard : BankAccount, IPayable public override bool Pay(decimal money) . bool IPayable.Pay(decimal money) . ,继承基类成员,实现接口成员,17,接口与多继承,解决二义性,public class CreditCard : BankAccount, IPayable public override bool Pay(decimal money) . bool IPayable.Pay(decim
8、al money) . public class VisaCard : CreditCard, IGlobalPayable public override bool Pay(decimal money) . bool IPayable.Pay(decimal money) . ,继承基类成员,实现接口成员,继承基类成员,实现IPayable成员,18,接口与多继承,解决二义性,public class CreditCard : BankAccount, IPayable public override bool Pay(decimal money) . bool IPayable.Pay(d
9、ecimal money) . public class VisaCard : CreditCard, IGlobalPayable public override bool Pay(decimal money) . bool IPayable.Pay(decimal money) . bool IGlobalPayable.Pay(decimal money) . ,继承基类成员,实现接口成员,继承基类成员,实现IPayable成员,实现IGlobalPayable成员,19,接口与集合,Interfaces IEnumerable, IEnumerator, IList, IDictionary.,20,接口与集合,Interfaces IEnumerable, IEnumerator, IList, IDictionary. Classes ArrayList, Queue, Stack, SortedList.,21,Demo: List/ Queue/ Stack,22,本章习题,简述接口和抽象类的相同点和不同点。 说说接口的显式实现和隐式实现的区别,以及它们各自的用途。 集合型类型支持接口有什么好处? 找出并定义图书馆管理系统中的相关接口。,