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");
}
} }
}最近用到接口了就仔细的看了一下,感觉挺方便,但是还有一些迷茫的地方:1、 Ic ik = new b();为啥要这样写呢?b是一个类,Ic是一个接口,将一个类直接实例化到一个接口上?
因为后面还可以这样写,ik=new a();访问的时候是不是通过接口只能看到接口指定的几个方法或者属性?2、用接口是不是就为了将两个不同的类,相同的方法、属性联系起来?
Ic ik=null;if(条件=="a")
{
ik=new a();
}else
{
ik=new b();
}ik.功能();//这样做我不就能可以判定使用了么?
ik.功能2();a类还是a类,b类还是b类,除了这样的方法,还能怎么来做这样的事情呢?(不考虑反射)
我现在是在做公司做码农,说实话,现在公司人做的程序,没有什么设计模式可言,全部的复制粘贴,所以我就想学一下,看看能不能用上来,艺多不压身么!就是设计模式不用在编程上面,以后我要是当了公司卫生部部长啥的,扫个地用一下设计模式不也能提高一下工作效率么?
关于多重继承,具体的我不熟,但是我感觉java和。net对他进行弃用是有自己的道理,大道理不知道,但是我感觉用接口也实现了一部分的多重继承的功能,要学习的东西还很多,任重道远啊!
这样式有好处的。比如一个函数int somefunc(ImyInterface obj)
{
...
}这个函数里面obj只使用了ImyInterface里定义的功能,就可以这样声明,这样,所以实现了ImyInterface的类的实例都可以当参数,这个函数就不用关心这些参数到底是什么类型了。非常方便!