浅析C#中接口的重要性

来源:互联网 发布:php公众号自定义菜单 编辑:程序博客网 时间:2024/06/05 10:24

C#中有了接口这一概念。我觉得接口就像是C++中的抽象基类。
接口可以理解为是一种约定,使得实现这个接口的类或是结构在形式上保持一致。

声明接口
语法和声明抽象类完全相同。
  

public interface IBankAccount{    void PayIn(decimal amount);    bool Withdraw(decimal amount);    decimal Balance    {        get;    }}

  注意:接口中只能包含方法、属性、索引器和事件的声明。不允许声明成员上的修饰符,即使是pubilc都不行,因为接口成员总是公有的,也不能声明为虚拟和静态的。如果需要修饰符,最好让实现类来声明。

接口使用:

class SaverAccount : IBankAccount{    private decimal balance;    public decimal Balance    {        get        {            return balance;        }    }    public void PayIn(decimal amount)    {        balance += amount;    }    public bool Withdraw(decimal amount)    {        if (balance >= amount)        {            balance -= amount;            return true;        }        Console.WriteLine("Withdraw failed.");        return false;    }    public override string ToString()    {        return String.Format("Venus Bank Saver:Balance={0,6:C}", balance);    }}

总结:
1、C#中的接口是独立于类来定义的。这与 C++模型是对立的,在 C++中接口实际上就是抽象基类。
  2、接口和类都可以继承多个接口。
  3、类可以继承一个基类,接口根本不能继承类。这种模型避免了 C++的多继承问题,C++中不同基类中的实现可能出现冲突。因此也不再需要诸如虚拟继承和显式作用域这类复杂机制。C#的简化接口模型有助于加快应用程序的开发。
  4、一个接口定义一个只有抽象成员的引用类型。C#中一个接口实际所做的,仅仅只存在着方法标志,但根本就没有执行代码。这就暗示了不能实例化一个接口,只能实例化一个派生自该接口的对象。
  5、接口可以定义方法、属性和索引。所以,对比一个类,接口的特殊性是:当定义一个类时,可以派生自多重接口,而你只能可以从仅有的一个类派生。
正如我们开头提到的C#中的接口就如同C++中的抽象类,但是C#中同样也存在抽象类,那么c#中的抽象类和接口又有什么区别呢?请看博客《浅析C#中的抽象类和接口的区别》

0 0
原创粉丝点击