Java不支持多重继承,但是Java中的每个类都隐式地扩展了Object并允许再继承一个。

您所在的位置:网站首页 java中不支持什么继承 Java不支持多重继承,但是Java中的每个类都隐式地扩展了Object并允许再继承一个。

Java不支持多重继承,但是Java中的每个类都隐式地扩展了Object并允许再继承一个。

#Java不支持多重继承,但是Java中的每个类都隐式地扩展了Object并允许再继承一个。 | 来源: 网络整理| 查看: 265

Java不支持多重继承,但是Java中的每个类都隐式地扩展了Object并允许再继承一个。 优客号 • 2022年11月26日 10:42:09 • 用户投稿

Java不支持多重继承,但是Java中的每个类都隐式地扩展了Object并允许再继承一个。如何解决Java不支持多重继承,但是Java中的每个类都隐式地扩展了Object并允许再继承一个。?您的类扩展了另一个类,但它也扩展了Object,因

如何解决Java不支持多重继承,但是Java中的每个类都隐式地扩展了Object并允许再继承一个。?

您的类扩展了另一个类,但它也扩展了Object,因此您仍然处于继承的一行,而不是两行。

解决方法

在Java中,所有类都隐式地扩展了Object类,除此之外,最多只能继承一个类。就像这样,是隐式地Java允许我们扩展2个类,还是Java遵循的其他逻辑?

Java支持多重继承

其实你说的多重继承就是Java中所说的接口实现如果确切的说,Java只存在单继承,也就是说,一个类最多只能够有一个基类,通过extends实现。

Java语言为什么不支持多重继承

这个要先从多重继承概念说起c++首先引入的多重继承带来了诸如菱形继承一类的问题,而后为了解决这个问题又不得不引入了虚继承这种概念。然而在实际的应用中人们发现继承更多的只被用在两种场合:扩充/改善基类,以及实现多态。

而对于这一种基类,由于其目的和普通的实例类已经有所不同,因此在java中将其改称为interface,即接口加以明确区分。因此,java或者c#所谓的不支持多重继承,只是不支持对实例类的多重继承——因为这种继承所带来的一点点代码上的缩减远比不上其引入的麻烦,但是对于用于实现多态的多重继承,即implement interface依然是很好的支持了的。

为什么Java不支持多重继承

简单我想在这里分享一下James Gosling对于Java的定义。Java: 一种简单的,面向对象的,分布式的,解释型的(译者注:Java既不是纯解释型也不是纯编译型的语言),健壮的,安全的,架构中立的,可移植的,高性能的,支持多线程的,动态语言。

现代程序语言应该有这样的特性。我们看到,定义第一个特性是什么?是简单。为了强化简单这个特点,这就是我们去除多重继承的原因。下面来看个例子,多重继承的菱形继承问题。

多重继承的钻石问题有两个类B和C继承自A。假设B和C都继承了A的方法并且进行了覆盖,编写了自己的实现。假设D通过多重继承继承了B和C,那么D应该继承B和C的重载方法,那么它应该继承哪个的呢?是B的还是C的呢?C++中经常会掉入这个陷阱,虽然它也提出了替代的方法来解决这个问题。

我们在Java中就不会出现这个问题。就算两个接口拥有同样的方法,实现的类只会有一个方法,这个方法由实现的类编写。动态的加载类会让多重继承的实现变得困难。

很少使用我们使用Java已经很长时间了,我们有多少次因为缺少多重继承而面临困难呢?我个人的经验是一次都没有。因为多重继承很少有机会被用到,所以更安全的做法是去掉它而保持简单性。就算是碰到需要多重继承的情景,我们也可以找到替代方法。

为什么java中不能支持多重继承

接口支持多重继承,实现类不支持只允许一个。这主要是防止增加程序的复杂性,模糊性,导致面向对象的概念不清,当然必须涉及安全性。

为什么Java不支持多重继承

先从Java 8之前说起。要区分“声明多继承”与“实现多继承”。

但是Java支持“声明多继承”——Java的接口的多继承——一个类可以实现多个接口(“继承”了多个接口上的方法声明),而一个接口可以继承多个接口(同样是“继承”了多个接口上的方法声明)。

接口只允许有方法声明而不允许有实现,因而不会出现像C++那样的实现多继承的决议问题;抽象类可以有方法实现,但要遵循Java类的单继承限制,也避免了实现多继承的问题。这是早期Java为了与C++区分开的一个决定。

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

一,Java不支持多继承是由Java的定义决定的,Java最重要的定义,就是因为它是一种简单的面向对象解释型的语言。

  二,Java不能多重继承是因为这种方法很少被使用,即使要使用也可以通过接口来实现多重继承问题。

  2,假设可以多重继承:

  有两个类B和C继承自A;假设B和C都继承了A的方法并且进行了覆盖,编写了自己的实现;假设D通过多重继承继承了B和C,那么D应该继承B和C的重载方法,那么它应该继承的是B的还是C的?这就陷入了矛盾,所以Java不允许多重继承。

Java 不支持多继承吗?

可以多继承接口,但是不能多继承普通类。

类定义属性和方法 描述某一类事物的抽象

而接口定义的是行为 并不限于任何具体意向。

而从实用角度上来说 单继承易读 易维护 语义清晰 逻辑清楚。

而接口则不同 接口只定义一些公共行为 比如有两个接口 一个定义了跑这个动作 另一个定义了走这个动作 人这个类就可以同时实现这两个接口所定义的行为 。

类对接口的implements称作实现 不能叫做继承 。

当然 接口可以多继承接口 因为接口只定义行为 并不包含类别的含义 不指代具体的某类事物 而且 从语义上来说 接口对接口的继承称之为扩展更为合适。

Java语言为什么不支持多重继承

这个要先从多重继承概念说起

c++首先引入的多重继承带来了诸如菱形继承一类的问题,而后为了解决这个问题又不得不引入了虚继承这种概念。然而在实际的应用中人们发现继承更多的只被用在两种场合:扩充/改善基类,以及实现多态。

而对于这一种基类,由于其目的和普通的实例类已经有所不同,因此在java中将其改称为interface,即接口加以明确区分。

因此,java或者c#所谓的不支持多重继承,只是不支持对实例类的多重继承——因为这种继承所带来的一点点代码上的缩减远比不上其引入的麻烦,但是对于用于实现多态的多重继承,即implement interface依然是很好的支持了的。

java为什么不支持多继承

java不支持多继承,接口可以多实现! 一个类想要拥有多个其他类的属性和方法 ,怎么办?详细的给分

将你需要实现的功能放在接口里,然后在需要使用的类中去实现这个接口的功能。

例如 有class a class b 和class c

它们分别实现不同功能

现在我想写一个类 class d 它需要实现a、b、c的功能。

那么怎么办呢?

java提供了接口,接口是一些抽象方法的集合,编写接口时不需要实现方法,只需要声

明方法名即可,在需要使用接口提供的功能的类中去覆盖或实现这些方法,并且java中

一个类可以同时实现多个接口。

好现在我们可以这样做:将类b,c所实现的功能用两个接口interface b,interface c来实

现。

实现接口使用关键字:implements

它的原型如下:implements interfaceName 其中interfaceName是接口的名称

那么这样写:class d extends a implements b,c{……}是正确的。

这样类d就可以实现另外三个类的功能。

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

如若内容造成侵权/违法违规/事实不符,请联系优客号进行投诉反馈,一经查实,立即删除! 赞 (0) 优客号 优客号 认证作者 0 0 生成海报 扫码分享到微信 【重磅】卡思数据&新榜《2019短视频内容营销趋势白皮书》完整版发布! « 上一篇 2022年11月26日 10:41:50 我膨胀了,金融盘点我也仔细看完了 下一篇 » 2022年11月26日 10:42:14 相关推荐 PHP通过气象局开放API查询指定城市(区县)天气 用户投稿 PHP通过气象局开放API查询指定城市(区县)天气 2022年11月20日 专访丨小司文化总裁严历:短视频第二增长曲线的本质是回归传统行业 用户投稿 专访丨小司文化总裁严历:短视频第二增长曲线的本质是回归传统行业 2022年11月17日 动辄点赞10W+,火遍抖音快手的情感视频号,赚钱的路子有多野? 用户投稿 动辄点赞10W+,火遍抖音快手的情感视频号,赚钱的路子有多野? 2022年11月18日 程序员需要知道的 RAID 基本原理 用户投稿 程序员需要知道的 RAID 基本原理 2022年11月6日 vue 使用微信jssdk,调用微信相册上传图片功能 用户投稿 vue 使用微信jssdk,调用微信相册上传图片功能 2022年11月17日 特斯拉潮州车祸多机构称难鉴定:数据只有特斯拉知道 用户投稿 特斯拉潮州车祸多机构称难鉴定:数据只有特斯拉知道 2022年11月16日 有趣的Python图片制作之如何用QQ好友头像拼接出里昂 用户投稿 有趣的Python图片制作之如何用QQ好友头像拼接出里昂 2022年11月4日 最具梦幻的影像旗舰来了!堪称1英寸大底之王 用户投稿 最具梦幻的影像旗舰来了!堪称1英寸大底之王 2022年11月16日 链接MongoDB Error: mongodb network is unreachable 如何解决? 用户投稿 链接MongoDB Error: mongodb network is unreachable 如何解决? 2022年11月17日 Spring Batch 入门示例 用户投稿 Spring Batch 入门示例 2022年11月9日 发表评论 取消回复请登录后评论...登录后才能评论


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3