有多重遗传的优点和缺点是什么?
有多重继承有什么优点和缺点?有多重遗传的优点和缺点是什么?
And为什么我们在C#中没有多重继承?
UPDATE 好了,所以它是目前避免,因为这个问题与冲突解决其父类的方法被调用等。当然,这是对于程序员来解决问题。或者,也许这可以像SQL一样在需要更多信息的情况下解决,即ID可能需要成为Sales.ID才能解决查询中的冲突。
主要意思是如果两个类有一个名称相同的方法,新的子类不知道要调用哪一个。
在C#中,您可以通过包含子对象中每个父对象的实例来执行多重继承的形式。
class MyClass
{
private class1 : Class1;
private class2: Class2;
public MyClass
{
class1 = new Class1;
class2 = new Class2;
}
// Then, expose whatever functionality you need to from there.
}
我会给这里亲基于C++的报告,作家,我一直converting to REALbasic(其中有接口,但只有单继承)。
多重继承可以更容易地从小的mixin基类中编写实现功能并具有记忆状态属性的类。当正确完成时,您可以获得大量小代码的重用,而无需复制和粘贴类似的代码来实现接口。
幸运的是,有REALbasic的延伸方法它们是像扩展方法最近添加到C#C#3.0中。这些有助于解决这个问题,特别是它们可以应用于数组。由于折叠了先前多重继承的类,我仍然得到了一些类层次结构更深的结果。
当你从什么继承你声称你的类是(基地)的不同之处在于,你可能会略有不同的方式实现的东西或添加东西给它,它实际上是非常罕见的,你类是每路输入 2件事一次。通常它只对2个或更多的东西具有共同的行为,而更好的描述方法通常是让你的类实现多个接口。 (或可能的封装,取决于你的情况)
这是一个帮助我不拍摄自己在脚下的怪癖,很像在Java中。
尽管从多个来源扩展字段和方法是很好的(想象一下从MP3播放器,相机,卫星导航和谦虚的老派手机继承而来的现代手机),冲突无法通过单独编译器。
它只是工具箱中的另一个工具。有时候,它恰恰是正确的工具。如果是这样,必须找到解决方法,因为语言实际上禁止它是一种痛苦,并导致很好的机会来搞砸它。
优点和缺点只能在具体案例中找到。我想这实际上适合一个问题是非常罕见的,但谁是语言设计师来决定我如何解决特定问题?
那么在C#中它不是一个工具箱! :) – 2009-04-20 03:21:52
http://stackoverflow.com/questions/225929/what-is-the-exact-problem-with-multiple-inheritance - 看起来像一个类似的问题 – 2009-04-20 00:03:47