Java不支持多重继承,但是Java中的每个类都隐式地扩展了Object并允许再继承一个。 |
您所在的位置:网站首页 › java中不支持什么继承 › Java不支持多重继承,但是Java中的每个类都隐式地扩展了Object并允许再继承一个。 |
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)![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |