对接口的作用有点迷茫

时间:2022-04-04 04:20:55

我首次接触接口(Interface),对接口的感化有点苍莽,C#接口中包罗要领、属性、索引器和事件的声明,但常用的接口中一般就是要领和属性,然而接口中并没有要领的具体实现代码(不能供给任何成员实现),只有要领的返回类型和要领名。一个类实现了某个接口,则必需在类中包罗接口中所有要领的实现代码,换句话说就是,担任自接口的类中必需包罗接口中函数的实现代码。

说到这里,可能就可以看出接口的一个感化,可以对担任自接口的类起到约束感化,下面通过一个简单的例子来说明。这个例子是《C#高级编程》这本书上的,我稍微窜改扩展了下。

举例:

大家都知道银行账户有很多种,像学生时代的我们一般都是储备卡(具有存钱、取钱、盘问余额等成果),事情后有钱了可能办个黄金卡、白金卡什么的,发达了可能会升级为钻石卡等,那么一个银行账户相当于一个类,这些差别品级的银行账户都具有一些配合的根基成果(存钱、取钱等),然而品级高的账户还有一些特别成果来提升银行的处事程度,所以这些账户类中既有配合的函数,又具有差异性。

成立一个控制台应用项目(InterfaceTest2),在Program.cs中界说一个接口1,这个接口是所以银行账户必需实现的接口,包罗最根基的成果。

[csharp]  

 

//账户接口1(所有银行账户类都要担任此接口)  

    public interface IBankAccount  

    {  

        void PayIn(decimal amount);//存钱函数  

        bool Withdraw(decimal amount);//取钱函数  

        decimal Balance { get; }//账户余额  

    }  

下面界说一个普通的屌丝银行账户类(储备账户),定名为SaverAccount,这个屌丝账户显然必需要实现接口1,因为接口1中的成果是银行规定的所以账户都要有的。

[csharp]  

 

//账户类1,普通储备账户  

    public class SaverAccount : IBankAccount  

    {  

        private decimal balance;  

  

        public void PayIn(decimal account)  

        {  

            balance = balance + account;  

        }  

  

        public bool Withdraw(decimal amount)  

        {  

            if (balance > amount)  

            {  

                balance = balance - amount;  

                return true;  

            }  

            Console.WriteLine("余额不敷!");  

            return false;  

        }  

  

        public decimal Balance  

        {  

            get  

            {  

                return balance;  

            }  

        }  

  

        public override string ToString()  

        {  

            return String.Format("Saver Bank balance:",balance);  

        }  

    }