C#高级编程笔记 Day 4, 2016年3月 12日(接口)

  例子:定义IBankAccount接口

1 namespace Test.YinXi{
2     public interface IBankAccount{
3         void PayIn(decimal amount);
4         bool Withdraw(decimal amount);
5         decimal Balance{
6             get;
7         }
8     }
9 }

  因为ITranssferBankAccount 派生自 IBankAccount
,所以它兼具IBank’Account
的有所成员和它和谐的积极分子。这象征实现(派生自)ITransferBankAccount
的别样类都无法不兑现IBankAccount 的装有办法和在ITransferBankAccount
中定义的新模式 TransferTo()。

  在本例中,接口的另外函数不必是虚拟的。

 1 using System;
 2 using Test.YinXi;
 3 using Test.YinXi.Bank;
 4 
 5 namespace Test.Yinxi
 6 {
 7     class MainEntryPoint
 8     {
 9         public static void Main(string[] args)
10         {
11             IBankAccount bank=new SaverAccount();
12             bank.PayIn(1000);
13             bank.Withdraw(200);
14             Console.WriteLine(bank.ToString());
15         }
16     }
17 }    

2、派生的接口

  接下去是一个测试代码:用来测试下边写的兑现的接口

  SaverAccount 派生自IBankAccount ,表示它赢得了IBankAccount
的装有成员,但接口实际上并不落实其格局,所以SaverAccount必须提供这一个主意的拥有实现代码。假使紧缺实现代码,编译器就会生出错误。接口仅表示其成员的存在性,类负责确定这个分子是杜撰的或者抽象的(但只有在类本身是空泛的,这么些函数才能是空泛的)

  下边是一个落实了 IBankAccount 接口的类

  

1、定义和兑现接口:接口名称通常上以字母 I 起先

  接口可以相互继承,其方法与类的接轨模式同样。下边是概念一个新的接口
ITransferBankAccount 继承 IBankAccount

1 namespace Test.YinXi
2 {
3     public interface ITransferBankAccount :IBankAccount
4     {
5         bool TransferTo(IBankAccount destination,decimal amount);
6     }
7 }
 1 namespace Test.Yinxi.Bank{
 2     public class SaverAccount:IBankAccount{
 3         private decimal balance;
 4         public void PayIn(decimal amount){
 5             balance+=amount;
 6         }
 7         public bool Withdraw(decimal amount){
 8             if(balance>=amount){
 9                 balance-=amount;
10                 return true;
11             }
12             Console.WriteLine("Withdrawal attempt failed.");
13             return false;
14          }
15         public decimal Balance{
16             get{
17                 return balance;
18             }
19         }
20         public override string ToString(){
21             return String.Format("Bank Saver: Balance={0,6:C}",balance);
22         }
23     }
24 }

  

 

相关文章