到目前为止,在我阅读的文章中,提到实现多重继承会增加复杂性。但我想知道它是否会增加消费者开发者方面或语言开发者方面的复杂性?
可以说,我们可以做这样的事情来克服歧义:
class Artist{
public void Draw(){ }
}
class Cowboy {
public void Draw() { }
}
class Person : Artist, Cowboy{
}
在这里,我们似乎有两个相同的签名方法,但是诸如this.base.Artist.Draw()
orthis.base.Cowboy.Draw()
和类型之外的语法,从它的实例person.base.Cowboy.Draw()
看来足以解决这种歧义。
那么我们在这里谈论的模糊性和复杂性是什么。那里有很多产品,但从消费者的角度来看,我们要处理的不会那么复杂。
base
在许多情况下,关键字可以防止歧义:
person.base.Cowbow.Draw();
(new Person()).base.Cowboy.Draw();
((Person) someInstance).base.Cowboy.Draw();
this.base.Cowboy.Draw();
- 等等