网页资讯视频图片知道文库贴吧地图采购
进入贴吧全吧搜索

 
 
 
日一二三四五六
       
       
       
       
       
       

签到排名:今日本吧第个签到,

本吧因你更精彩,明天继续来努力!

本吧签到人数:0

一键签到
成为超级会员,使用一键签到
一键签到
本月漏签0次!
0
成为超级会员,赠送8张补签卡
如何使用?
点击日历上漏签日期,即可进行补签。
连续签到:天  累计签到:天
0
超级会员单次开通12个月以上,赠送连续签到卡3张
使用连续签到卡
07月30日漏签0天
百战程序员吧 关注:753贴子:7,154
  • 看贴

  • 图片

  • 吧主推荐

  • 游戏

  • 0回复贴,共1页
<<返回百战程序员吧
>0< 加载中...

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

  • 只看楼主
  • 收藏

  • 回复
  • 某人是猪
  • 武林高手
    9
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
为什么Java不支持类多重继承, 可以考虑以下两点:
1、 第一个原因围绕钻石💎形继承问题产生的歧义
考虑一个类 A 有 foo() 方法, 然后 B 和 C 派生自 A, 并且有自己的 foo() 实现,现在 D 类使用多个继承派生自 B 和 C。
如果我们只引用 foo(), 编译器将无法决定它应该调用哪个 foo(),这也称为 Diamond 问题,因为这个继承方案的结构类似于菱形,见下图:

即使我们删除钻石的顶部 A 类并允许多重继承,我们也将看到这个问题含糊性的一面。如果你把这个理由告诉面试官,他会问为什么 C++ 可以支持多重继承而 Java不行。
2、多重继承确实使设计复杂化并在强制转换、构造函数链接等过程中产生问题。
假设你需要多重继承的情况并不多,简单起见,明智的决定是省略它。
此外,Java 可以通过使用接口支持多继承来避免这种歧义。由于接口只有方法声明而且没有提供任何实现,因此只有一个特定方法的实现,因此不会有任何歧义。


登录百度账号

扫二维码下载贴吧客户端

下载贴吧APP
看高清直播、视频!
  • 贴吧页面意见反馈
  • 违规贴吧举报反馈通道
  • 贴吧违规信息处理公示
  • 0回复贴,共1页
<<返回百战程序员吧
分享到:
©2025 Baidu贴吧协议|隐私政策|吧主制度|意见反馈|网络谣言警示