读书人

类的多重继承C#怎么用接口实现

发布时间: 2012-02-22 19:36:55 作者: rapoo

类的多重继承,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

读书人网 >asp.net

热点推荐