使用Interface有什么好处?

Nig*_*hil 4 .net c# oop

使用Interface有什么用?

我听说它被用来代替多重继承,数据隐藏也可以用它来完成.

是否还有其他优点,使用places接口的位置,以及程序员如何识别需要的接口?

explicit interface implementation和之间有什么区别implicit interface implementation

ray*_*ray 5

为了解决隐式/显式问题,让我们说两个不同的接口具有相同的声明:

interface IBiographicalData

    {
       string LastName
       {
          get;
          set;
       }

    }

    interface ICustomReportData
    {
       string LastName
       {
          get;
          set;
       }
    }
Run Code Online (Sandbox Code Playgroud)

你有一个实现两个接口的类:

class Person : IBiographicalData, ICustomReportData
{
    private string lastName;

    public string LastName
    {
        get { return lastName; }
        set { lastName = value; }
    }
}
Run Code Online (Sandbox Code Playgroud)

类Person 隐式实现两个接口,因为您使用以下代码获得相同的输出:

Person p = new p();
IBiographicalData iBio = (IBiographicalData)p;
ICustomReportData iCr = (ICustomReportData)p;

Console.WriteLine(p.LastName);
Console.WriteLine(iBio.LastName);
Console.WriteLine(iCr.LastName);
Run Code Online (Sandbox Code Playgroud)

但是,要明确实现,您可以像这样修改Person类:

class Person : IBiographicalData, ICustomReportData
{
    private string lastName;

    public string LastName
    {
        get { return lastName; }
        set { lastName = value; }
    }

    public string ICustomReportData.LastName
    {
        get { return "Last Name:" + lastName; }
        set { lastName = value; }
    }
}
Run Code Online (Sandbox Code Playgroud)

现在的代码:

Console.WriteLine(iCr.LastName);
Run Code Online (Sandbox Code Playgroud)

将以"姓氏:"为前缀.

http://blogs.msdn.com/b/mhop/archive/2006/12/12/implicit-and-explicit-interface-implementations.aspx