为什么 Java 不支持多重继承?

为什么 Java 不支持多重继承?

回答重点

主要是因为多继承会产生菱形继承(也叫钻石继承)问题,Java 之父就是吸取 C++ 他们的教训,因此不支持多继承。

所谓的菱形继承很好理解,我们来看下这个图:

Snipaste_2024-05-07_19-32-55.jpg

是不是看起来很像一个菱形,BC 继承了 A,然后 D 继承了 BC, 假设此时要调用 D 内定义在 A 的方法,因为 B 和 C 都有不同的实现,此时就会出现歧义,不知道应该调用哪个了。

扩展知识

这里很可能会被面试官追问:既然多继承不行,那为什么接口多实现可以?

为什么接口可以多实现?

在 Java8 之前接口是无法定义具体方法实现的,所以即使有多个接口必须子类自己实现,所以并不会发生歧义。

Java8 之后出了默认方法(default method),此时不就又出现的多继承的菱形继承问题了?

所以 Java 强制规定,如果多个接口内有相同的默认方法,子类必须重写这个方法。

不然,编译期就会报错:

image.png

...

猜你喜欢

诗琪名字的寓意和含义
365审核要多久

诗琪名字的寓意和含义

07-20 3766
嘟哝(嘟噥)的意思
beta365体育

嘟哝(嘟噥)的意思

07-04 455
软件即服务
365提款验证地址是什么

软件即服务

08-03 2925
手机刷剧免费软件排行榜TOP10推荐
365提款验证地址是什么

手机刷剧免费软件排行榜TOP10推荐

08-11 8148
提高 iPhone 性能的 10 个技巧
beta365体育

提高 iPhone 性能的 10 个技巧

08-21 9019
京东便利
beta365体育

京东便利

08-03 3651