为什么 Java 中不允许多继承?

这篇具有很好参考价值的文章主要介绍了为什么 Java 中不允许多继承?。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。


前言

思考现在既定事实背后的原因


1、为什么不允许多继承?

  • 多继承会导致“钻石问题”

2、钻石问题是什么?

(1) 是什么

  • 类 B、C 继承父类 A,类 D 同时继承了 B 和 C(假设存续多继承)
  • 下述图表的形状类似于钻石(或者菱形),因此这个问题被形象地称为钻石问题(菱形继承问题)
    为什么 Java 中不允许多继承?

为什么 Java 中不允许多继承?文章来源地址https://www.toymoban.com/news/detail-412667.html

(2) 造成什么问题

  • 以上述例子说明:
  • 类 D 初始化时,会执行两次类 A 的初始化,造成资源浪费
  • 调用“D.xxx()”类 A 的方法将会导致一个编译错误。这是因为编译器并不知道是调用 B.getWeight() 还是调用C.getWeight()。所以,调用 getWeight 方法是不明确的故不能通过编译。这一点未实操验证

  • 参考资料:
    https://blog.csdn.net/feilzhang/article/details/80443194
    https://blog.csdn.net/weixin_34942564/article/details/114308166

到了这里,关于为什么 Java 中不允许多继承?的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【从JVM看Java,三问继承和多态,是什么?为什么?怎么做?深度剖析JVM的工作原理】

    《计算机底层原理专栏》:欢迎大家订阅学习,能够帮助到各位就是对我最大的鼓励! 文章目录 系列文章目录 前言 一、JVM是什么 二、 什么是继承 三、 什么是多态 总结         这篇文章聚焦JVM的实现原理,我更专注于从一个语言的底层原理,去剖析他的语法所实现的意义

    2024年02月05日
    浏览(55)
  • [WinError 10038] 在一个非套接字上尝试了一个操作,这是许多编程人员经常遇到的错误之一。本文将解释什么是套接字,为什么会出现 WinError 1...

    [WinError 10038] 在一个非套接字上尝试了一个操作,这是许多编程人员经常遇到的错误之一。本文将解释什么是套接字,为什么会出现 WinError 10038 错误以及如何解决该错误。 在计算机网络编程中,套接字是一个端点,用于发送和接收网络数据。它可以是客户端或服务器端,并与

    2024年02月16日
    浏览(59)
  • 【C++】 为什么多继承子类重写的父类的虚函数地址不同?『 多态调用汇编剖析』

    👀 樊梓慕: 个人主页  🎥 个人专栏: 《C语言》 《数据结构》 《蓝桥杯试题》 《LeetCode刷题笔记》 《实训项目》 《C++》 《Linux》《算法》 🌝 每一个不曾起舞的日子,都是对生命的辜负 本篇文章主要是为了解答有关多态的那篇文章那块的一个奇怪现象,大家还记得这张

    2024年02月19日
    浏览(38)
  • 若依项目如何实现一个账户只能一个人登录(即,限制账户不允许多终端登录)

    目录 一、不分离版 在application.yml设置maxSession为1即可。修改shiro的配置 二、分离版springboot+vue 1、application.yml新增一个配置soloLogin用于限制多终端同时登录。修改token的配置。 2、Constants.java新增一个常量LOGIN_USERID_KEY公用。 3、调整TokenService.java,存储刷新缓存用户编号信息  

    2024年02月08日
    浏览(40)
  • 【走进Java框架】什么是Java框架,为什么要学习Java框架.

    前言: 大家好,我是 良辰丫 ,今天我们就要开始Java框架之旅了,我们在学习的征途中不断充实自己,提升自己的能力,加油哈,自我勉励一下,跟随我的步伐,一起前行哈.💌💌💌 🧑个人主页:良辰针不戳 📖所属专栏:javaEE进阶篇之框架学习 🍎励志语句:生活也许会让我们遍体鳞

    2024年02月07日
    浏览(42)
  • Java中有了equals(),为什么还有“==“

    背景:Java中“一切皆是对象”,为什么还有非对象的“==”? 在Java语言假设我们只进行OOP,所以Java代码都是由一个接着一个的类组成的。那么,对象之间比较,用equals()就可以了。 可为什么“==”在代码随处可见呢? Java是基于C++的,相比与C++,Java是一种更“纯粹”的面向

    2023年04月20日
    浏览(57)
  • 【JAVA】为什么要使用封装以及如何封装

    个人主页:【😊个人主页】 系列专栏:【❤️初识JAVA】 Java的封装指的是在一个类中将数据和方法进行封装,使其可以保护起来,只能在该类内部访问,而不允许外部直接访问和修改。这是Java面向对象编程的三个基本特性之一,另外两个是继承和多态。在此之前我们已经学

    2024年02月08日
    浏览(60)
  • 为什么Java是物联网的完美选择

    在过去的十年中,我们见证了各种设备通过网络连接在一起,各种传感器、温度计、交通、流速传感器以及数据传输。大家都听说过互联网,那有没有听说过物联网呢?大家下面可以跟着袁老师的步伐探讨物联网相关的内容。 我们都知道,Java语言在开发上优势明显,稳定性

    2024年01月21日
    浏览(42)
  • 【JAVA】Java8开始ConcurrentHashMap,为什么舍弃分段锁

    🍎 个人博客: 个人主页 🏆 个人专栏:      JAVA    ⛳️  功不唐捐,玉汝于成 目录 前言  正文 分段锁的好处: 结语 我的其他博客 前言  在Java 8中, ConcurrentHashMap 的实现经历了重大的改进,其中最引人注目的变化之一就是舍弃了传统的分段锁机制,转而采用了基于C

    2024年01月17日
    浏览(38)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包