java为什么不能多继承_为什么Java不支持多继承

最近我的一个朋友进行了几次面试,碰到了一个很容易被问的问题:为什么Java不支持多重继承,尽管他回答Java可以通过实现多个interface的方式实现多重继承,但面试官却依然为什么不支持。也许我的朋友仅仅是阅读了一些相关的博客,因此他过来把这个经典的问题抛给我,类似为什么Java中的String是不可变的常量一样,也许这样做是Java创造者设计决定的。然而我觉得至少以下两个原因是有意义的:

1)避免diamond problem(菱形问题),假设class A有一个foo()方法,class B和Class C都继承了A并实现了foo()方法,Class D 同时继承了Class B、Class C,如果在D中调用foo()方法,那哪个会被调用呢?这个被称为diamond problem,因为这种继承结构与四个边的菱形类似,

A foo()

/ \

/  \

B foo()  C foo()

\  /

\ /

D foo()

我认为即使把顶部的class A去掉在D中调用foo()时依然有这样的歧义。

也许有时你还会被问为什么C++支持multiple inheritance而Java却不行,这时我会向他解释下面的第二个原因,这不是技术原因,而是从程序的可维护、可读行上考虑的,然而这只是我个人推测,只有Java设计者才能确认这个原因。Wikipedia 上有各种语言应对diamond problem引起问题的解决方式。

2)第二个更能说服我的原因是多重继承复杂化了设计并在类型转换、构造上带来了更多的问题,并且也没有很多必须使用多重继承的场景,因此为了简单化而不使用多重继承是明智的。为了避免歧义,Java使用interface实现了single inheritance,interface只提供了方法的声明而没有方法的实现,因此在子类中只有一个方法的实现也就不会产生歧义了。

0b1331709591d260c1c78e86d0c51c18.png

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/50217.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

我的世界服务器物品不堆叠,我的世界不可堆叠物品怎么堆叠

来源:游戏园日期:2019-05-11 04:03:07 我的世界不可堆叠物品怎么堆叠。那在我的世界里面怎么制作堆叠的不可堆叠物品,怎么感觉这个问的这么绕口呢?那不管了,下面就一起来看看下面的这个教你怎么堆叠不可堆叠物品的方法…

【花雕动手做】有趣好玩的音乐可视化系列小项目(14)---水杯水瓶灯

偶然心血来潮,想要做一个声音可视化的系列专题。这个专题的难度有点高,涉及面也比较广泛,相关的FFT和FHT等算法也相当复杂,不过还是打算从最简单的开始,实际动手做做试验,耐心尝试一下各种方案,…

我的AI不可能这么傻:深度学习的致命弱点

转载自 Nature 点击上方“迈微AI研习社”,选择“星标★”公众号 原作者: Douglas Heaven 关注公众号阅读原文,这个排版太差。 人工智能专家正在想办法修复神经网络的缺陷。 一辆自动驾驶汽车正在靠近一个停车让行标志,它非但没有停下&…

水瓶效果制作

前言 提示:这里可以添加本文要记录的大概内容: 本次分享主要为水瓶效果,思路借鉴于https://www.patreon.com/posts/quick-game-art-18245226 该链接,不过部分内容较难理解,所以打算使用自己的思路实现一下 提示&…

读书笔记:深度学习进阶-自然语言处理(俗称鱼书二)

文章目录 前言一、神经网络的复习二、自然语言和单词的分布式表示2.1什么是自然语言处理2.2同义词词典2.3基于计数的方法2.3.1基于python的语料库的预处理2.3.2单词的分布式表示2.3.3分布式假设2.3.4共现矩阵2.3.5向量间的相似度2.3.6相似单词的排序 2.4基于计数的方法的改进2.…

隐私计算将改变金融行业的游戏规则?

开放隐私计算 01 背景 2月底,相关部门印发《数字中国建设整体布局规划》提出,到2025年,基本形成横向打通、纵向贯通、协调有力的一体化推进格局,数字中国建设取得重要进展;到2035年,数字化发展水平进入世界…

【ChatGLM】使用ChatGLM-6B-INT4模型进行P-Tunning训练记录及参数讲解

文章目录 模型训练步骤参数含义名词解释欠拟合泛化能力收敛性梯度爆炸 初步结论 小结 模型训练 首先说明一下训练的目的:提供本地问答知识文件,训练之后可以按接近原文语义进行回答,类似一个问答机器人。 步骤 安装微调需要的依赖&#xf…

几个潜在的AI科研助手

最近看到一个新闻说ChatGPT被某科研文章列为作者之一。以自然语言处理和深度学习为基础的人工智能在语言修改润色和翻译方面表现优异,似乎还将改变一些传统的论文阅读和写作方式。本文记录几个最近了解到的几个工具。 Scispace 地址:https://typeset.io/…

客户体验词汇表:需要了解的最重要的术语

无论如何,当我们说客户体验时,是什么意思? 这是最终的客户体验词汇表,可帮助指导您。 客户体验,也称为 CX,会影响从客户参与度、保留率、忠诚度、终生价值到最终盈利的方方面面。 难怪获得正确的客户体验是…

免费的chaGPT安利给大家 ,体验了一下还是不错的!!!分享下感受

第一点: 确实很智能、聪明 ,知道你想问的问题,即使问题不清楚,比传统的单一搜索具有连贯性,能根据上几次问题进行连贯回答 。第二点: 用来搜索代码确实真的方便,代码注释都写的清清楚楚、详细 &…

ChatGPT这么火,你会被取代吗?

前言 ChatGPT爆火后,“程序员要失业了”、“程序员要下岗了”之声不绝于耳,引得程序员们不由得一阵惊慌。 ChatGPT这么火,以后是不是不需要那么多程序员了。 这个话题太过于火热,我也不由的试用了下,但是经过使用、和…

炸裂了!3分钟用GPT4做一个PPT!

GPT4有多强了,相信体验过的同学都知道,一个字爽!无论是速度,还是数据集还是功能都比3.5要强大很多。现在越来越多的人开始用GPT4了,可以大幅的提高我们的工作和学习的效率,今天小编就用GPT4快速做一个PPT&a…

CPU、GPU与算存互连的复杂比较与重要性分析

LLM | AMD | Intel | NVIDIA GLM | ARM | AIGC | Chiplet 随着深度学习、高性能计算、NLP、AIGC、GLM、AGI的快速发展,大模型得到快速发展。2023年科创圈的顶尖技术无疑是大模型,据科技部新一代人工智能发展研究中心发布的《中国人工智能大模型地图研究…

[YOLO] yolov3 博客学习笔记汇总

pip下载速度太慢,国内镜像: 国内镜像解决pip下载太慢https://blog.csdn.net/weixin_51995286/article/details/113972534 在线卷积计算器: 在线卷积计算器http://www.sqflash.com/cal.html 网络学习 IOU: 机器学习知识总结 —— 11. 关…

多种UI和界面设计汇总(一)

下面汇总了一些不错的UI设计的效果图,让我们看看多种UI布局和界面设计。它们风格迥异,也基本上都是Web页面上的。下面请看: Old Paper Layout/旧纸张布局 Professional Modern Web Layout/专业现代网页布局 Photography portfolio Design/影集…

从交互设计师的角度,聊聊设计工具的那些事

工欲善其事,必先利其器,这句话是出自论语,讲的是要做好一件事,工具是非常重要的,作为一个设计师,设计工具对于我们的重要性毋庸置疑,每天都在接触,也有很多感悟和心得。 我从事设计…

移动开发实验一:微信ui设计

一、设计目标 1.1 设计要求 完成类微信的门户页面框架设计,APP最少必须包含4个tab页面。框架设计需要使用 fragment,activity,不得使用UNIAPP技术进行开发(H5或者小程序); 1.2 设计功能介绍 (1&…

UI设计,仅是画张图吗?

UI设计,仅是画张图吗? 很多时候,当别人问及你是做UI设计,会随口说:“哦,美工!“。象这样的称呼,很多有UI比较早的公司(比如金山,讯腾等)&#x…

后台ui大全(有这些你就够了)

做过后台开发的都知道,我们后台ui基本上都是去拖一个现成的ui框架,然后我们在此基础上改改就差不多了,那该如何选择合适的后台ui呢,哥们那你走运了,我最近整理了最近用的比较多的后台ui,希望有你喜欢的一款。(后面有下…

GUI绘图界面设计

本文介绍matlab中简单的gui绘图界面设计 设计内容: 1、设计GUI界面: 2、通过下拉菜单选择绘制正弦、正切函数; 3、通过编辑框输入命令,根据命令绘制图形; 4、通过按钮在图形中输出标注(标题、各轴名称&…