日期:2014-05-18 浏览次数:20889 次
namespace ConsoleApplication11
{
class Program
{
static void Main(string[] args)
{
Ic ik = new b();
ik.show();
ik = new a();
ik.k = 123;
b mb = new b();
mb.showD();
Console.ReadKey();
}
class a : Ic
{
public int k { get; set; }
public void show()
{
Console.Write("a show\n");
}
}
class b :d,Ic
{
public int k{get;set;}
public override void show2()
{
Console.Write("b show2\n");
}
public void show()
{
Console.Write("b show\n");
}
}
interface Ic
{
void show();
int k { get; set; }
}
abstract class d
{
public abstract void show2();
public void showD()
{
Console.WriteLine("d show fun=showD");
}
}
}
}
Ic ik = new b();
------解决方案--------------------
面向接口编程,会更加灵活,接口变量可以作为方法的一个参数。
------解决方案--------------------
1,2是关联问题
接口编程能更耦合共性操作,运行时多态
------解决方案--------------------
接口可以用来表示任何实现它的类,就像基类可以表示任何由它派生出的类一样。
这样式有好处的。
比如一个函数
int somefunc(ImyInterface obj)
{
...
}
这个函数里面obj只使用了ImyInterface里定义的功能,就可以这样声明,这样,所以实现了ImyInterface的类的实例都可以当参数,这个函数就不用关心这些参数到底是什么类型了。非常方便!