一、使用接口解决什么问题?
假如我们有一下的程序:
class CA
{
<span style="white-space:pre"> </span>public string Name;
<span style="white-space:pre"> </span>public int age;
}
class CB
{
<span style="white-space:pre"> </span>public string first;
<span style="white-space:pre"> </span>public string last;
<span style="white-space:pre"> </span>public double PersonAge;
}
class Program
{
<span style="white-space:pre"> </span>static void PrintInfo(CA item)
<span style="white-space:pre"> </span>{<span style="white-space:pre"> </span>
<span style="white-space:pre"> </span>Console.WriteLine("Name:{0},Age:{1}",item.Name, item.Age):
<span style="white-space:pre"> </span>}
<span style="white-space:pre"> </span>static void Main()
<span style="white-space:pre"> </span>{
<span style="white-space:pre"> </span>CA a = new CA(){ Name = "John Doe", Age = 35};
<span style="white-space:pre"> </span>PrintInfo(a);
<span style="white-space:pre"> </span>}
}
在这里,我们只有传入CA才能使PrintInfo正常工作。如果想传入CB就不行。首先,代码中实参必须为CA,另外,CA与CB的结构也不同。为了使代码能更好工作,可以统一接口。代码如下:
interface IInfo
{
string GetName();
string GetAge();
}
然后定义CA或者CB时实现这个接口:
class CA:IInfo
{
...
public string GetName() {return Name;}
...
}
这样,假如实例化了CA和CB,就可以在PrintInfo里直接使用。
PrintInfo(ca);
PrintInfo(cb);