日期:2014-05-18  浏览次数:20473 次

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