2014-05-02 34 views
0

我已经通过各种网站了解了java不支持多重继承。其中一个原因是为了避免像投射和构造链的问题。多继承如何导致Java中的转换和构造器链接问题?有人可以用例子来解释我吗?多重继承铸造,构造函数链接

+0

如果一个类继承自多个类,并且每个类都有一个构造函数,则它们都必须运行以初始化子类。 –

+0

但是它是如何产生铸造问题的呢?请用例子 – Beast

+0

解释你在这些网站上提到的原因之一。在Arnold,Gosling和Holmes中特别提到的唯一原因* Java编程语言*是钻石继承。我不认为铸造或构造函数链是实现多重继承的主要问题。 – EJP

回答

0

为什么多重继承可能成为一个问题有多种原因,为了防止这些问题,Java根本不允许它。主要的是钻石继承,也就是钻石问题。可以说你有超类动物,还有土地和水的亚类。现在,让我们说你创建另一个班,青蛙。因为青蛙可以生活在水中或陆地上,所以你决定蛙类将来自土地和水。因此它将成为土地和水的一个子类。

让我们扩展我们的场景,说动物类有一个移动方法。这种方法让动物走了一段距离,但没有说明它们是如何做的。土地子类覆盖此移动方法以指定动物正在行走。同时,水的子类越过,以指定动物正在游泳。如果一只青蛙想要移动,它不会知道它是游泳还是步行。这会导致一些严重的问题,并且是EJP所指的基本问题。