类的多重继承,C#如何用接口实现。
C# code
public class Class1
{
public void fangfa1()
{
MessageBox.Show("fangfa1");
}
}
public class Class2
{
public void fangfa2()
{
MessageBox.Show("fangfa2");
}
}
public class Class3
{
Class1 c1 = new Class1();
Class2 c2 = new Class2();
public void fangfa1()
{
c1.fangfa1();
}
public void fangfa2()
{
c2.fangfa2();
}
}
上面是我的一种方法,但觉得每个实例化一次太麻烦。
改良一点就是可以继承一个,实例化一个。
但我的疑问是,如果Class1和Class2非常庞大,首先是我不能改动Class1和Class2类,也就是说不能把他们改成接口。
如果能多继承的话用到哪个就调用哪个就方便了。都说接口解决了类的多继承问题,是怎么解决的。
------解决方案--------------------
谁说接口解决了多继承问题了?
继承一般有三个作用,特化接口,重写函数,以及模块重用。
在OO design里面,特化接口这个作用是最主要的,而模块重用由于可以用代理模式来实现(就是你的那种做法),所以就淡化了。
于是对于特化接口这部分工作,就冒出了个interface来加强来。所以interface只是取代了继承的一部分功能。
所以多接口是不能取代多继承的模块重用的功能的。
你这种实现是可以的,而且不麻烦。
如果你要在新的类里面原封不动地暴露原来两个类的所有方法,且新的类也没有implement any interface,那干嘛要产生一个新的类呢?直接用两个老的即可~
------解决方案--------------------看看,帮你up