使用Interface有什么用?
我听说它被用来代替多重继承,数据隐藏也可以用它来完成.
是否还有其他优点,使用places接口的位置,以及程序员如何识别需要的接口?
explicit interface implementation和之间有什么区别implicit interface implementation?
为了解决隐式/显式问题,让我们说两个不同的接口具有相同的声明:
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