[摘要]最后讨论一下无法继承多种类的装配问题。该问题的原因在于Java不允许多层继承。 Java不能进行多层继承。这一点大多经常作为其优点而不是缺点而被提出来。C++允许多层继承,但结果却致使程序变得非...
最后讨论一下无法继承多种类的装配问题。该问题的原因在于Java不允许多层继承。
Java不能进行多层继承。这一点大多经常作为其优点而不是缺点而被提出来。C++允许多层继承,但结果却致使程序变得非常复杂,而且还产生了难以理解的错误。
多层继承在装配时会很复杂 多层继承会在如下几个方面导致混乱。第一是名称的冲突。在继承具有相同名称的其他类时,不知道是哪个类的方法将会被调用(图5)。这一点是在一个类继承两个已经继承了某一个类的类时经常发生的问题。这种继承称为菱形继承(图6)。在分别改写(override)最上层的类的方法后,就会引起被最下层的类所调用的问题。
http://china.nikkeibp.co.jp/china/img_data/030129java12.jpg |
图5●在需要继承两个具有相同名称的方法的超级类时,其名称就会发生冲突。这一点是经常被作为多层继承的问题而指出来的地方(点击放大) |
……