欢迎来到天天文库
浏览记录
ID:51699275
大小:63.00 KB
页数:5页
时间:2020-03-15
《全面剖析C#接口编程之定义接口.doc》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、全面剖析C#接口编程之定义接口二2008年07月24日星期四下午03:04什么是接口?其实,接口简单理解就是一种约定,使得实现接口的类或结构在形式上保持一致。个人觉得,使用接口可以使程序更加清晰和条理化,这就是接口的好处,但并不是所有的编程语言都支持接口,C#是支持接口的。注意,虽然在概念上,C#接口类似于COM接口,但他们的底层结构是不同的。那么,我们来看一下如何声明和使用接口。 声明接口 声明接口在语法上和声明抽象类完全相同,例如这里有一个银行账户的接口: publicinterfaceIBankAccount{ voidPayIn(decimalamount);
2、boolWithdraw(decimalamount); decimalBalance { get; }} 使用接口的例子 一个银行账户的接口,两个不同银行账户的实现类,都继承于这个接口。接口声明如上。下面是两个账户类:classSaverAccount:IBankAccount{ privatedecimalbalance; publicdecimalBalance { get { returnbalance; } } publicvoidPayIn
3、(decimalamount) { balance+=amount; } publicboolWithdraw(decimalamount) { if(balance>=amount) { balance-=amount; returntrue; } Console.WriteLine("Withdrawfailed."); returnfalse; } publicoverridestringToString() {
4、 returnString.Format("VenusBankSaver:Balance={0,6:C}",balance); }}classGoldAccount:IBankAccount{ privatedecimalbalance; publicdecimalBalance { get { returnbalance; } } publicvoidPayIn(decimalamount) { balance+=amount; } publi
5、cboolWithdraw(decimalamount) { if(balance>=amount) { balance-=amount; returntrue; } Console.WriteLine("Withdrawfailed."); returnfalse; } publicoverridestringToString() { returnString.Format("JupiterBankSaver:Balance={0,6:
6、C}",balance); }} 可见,这两个实现类多继承了IBankAccount接口,因此它们必须要实现接口中的所有声明的方法。要不然,编译就会出错。staticvoidMain(string[]args){ IBankAccountvenusAccount=newSaverAccount(); IBankAccountjupiterAccount=newCurrentAccount(); venusAccount.PayIn(200); jupiterAccount.PayIn(500); Console.WriteLine(venusAcco
7、unt.ToString()); jupiterAccount.PayIn(400); jupiterAccount.Withdraw(500); jupiterAccount.Withdraw(100); Console.WriteLine(jupiterAccount.ToString());} 请注意开头两句,我们把它们声明为IBankAccount引用的方式,而没有声明为类的引用,为什么呢?因为,这
此文档下载收益归作者所有