浅析C#中接口的重要性

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#中的抽象类和接口的区别

posted on 2015-09-07 10:30  wangshubo123  阅读(401)  评论(0编辑  收藏  举报

导航