千锋教育-做有情怀、有良心、有品质的职业教育机构

手机站
千锋教育

千锋学习站 | 随时随地免费学

千锋教育

扫一扫进入千锋手机站

领取全套视频
千锋教育

关注千锋学习站小程序
随时随地免费学习课程

当前位置:首页  >  技术干货  > 如何解决Java中的多重继承问题

如何解决Java中的多重继承问题

来源:千锋教育
发布人:syq
时间: 2022-09-16 15:11:01 1663312261

  Java是当今最流行的面向对象编程语言之一。由于它是独立于平台的,因此您可以在每种类型的设备和每个操作系统上找到 Java 应用程序。而且由于Java相对容易学习,因此它是许多程序员学习的第一批语言之一。

如何解决Java中的多重继承问题

  您应该熟悉的 Java 的一个重要特性是类继承。继承允许程序员通过促进类重用来优化代码。如果可以重用已经过测试和调试的代码,软件开发生命周期将变得更短且成本更低。

  虽然理论上是一个简单的概念,但编码继承关系需要注意细节。对于多重继承尤其如此,其中单个子类从多个父类继承属性。

  Java拒绝多重继承关系,因为它们会产生歧义,但是如果您知道该怎么做,有几种方法可以实现许多相同的效果。

  在本文中,我们将研究多重继承的问题,并讨论Java中的替代编码选项。

  继承术语

  有时,要成为一名成功的程序员,你必须学会解决问题,以便找到常见错误或问题的解决方法。这是安全智能编码的必要部分。

  其中一个问题涉及Java中的多重继承(或者更确切地说,缺乏多重继承)。

1

  要完全理解 Java 中的继承,您需要熟悉基本的面向对象编程 (OOP) 继承术语。

  类: 类是面向对象编程语言中的基本模板结构。类定义一组对象的公共属性。

  父类:父类也称为基类或超类,是为子类提供功能的可扩展类。这就是可重用性发挥作用的地方。创建子类时,将重用父类定义和函数。

  儿童班:更一般地称为子类,子类从另一个类继承特征。子类是扩展类或派生类。

  遗产:父类和子类之间的关系。

  输出读取继承类型

  目前有许多流行的面向对象编程语言在使用,包括 Java、C++、JavaScript、Python、PHP、Ruby 和 Perl。虽然继承是这些 OOP 语言的常见概念,但并非所有继承类型都存在于每种语言中。

  了解您正在使用的特定语言中的一般继承类型和继承限制至关重要。您对继承的了解越多,您就越能有效地成为一名软件开发人员。

  Java 支持的继承类型包括:

  单级继承:当子类从单个父类派生功能时。

  多级继承:这是单级继承的分层形式。在多级继承中,子类还可以充当其他子类的父类。每个级别之间的关系都是线性的 - 没有分支像多重继承那样延伸到上面。然后,最终的子类具有其上方每个级别的功能。

  分层继承:与多重继承相反。在分层继承中,单个父类具有多个子类。因此,它不是在上面有分支,而是在下面分支。

  混合继承:顾名思义,混合继承是其他继承类型的组合。

  除了上面的继承类型之外,Java 还支持其他类型。

  多重继承:在多重继承中,一个子类具有多个父类。虽然 Java 和 JavaScript 不支持多重继承,但 OOP 语言(如C++支持多重继承)

  多路径继承:多级、多级和分层继承的混合体,在多路径继承中,子类从父类和父类的多个子类派生其特性和功能。因为多路径继承依赖于多重继承,所以 Java 不支持它的使用。

  为什么 Java 不支持多重继承

  多重继承的主要问题是,它有可能在子类中产生歧义。在1995年的概述白皮书中,Java首席设计师詹姆斯·高斯林(James Gosling)指出,多重继承的问题是创建Java的动机之一。

  多重继承所固有的困难在钻石问题中表现得最为明显。在菱形问题中,父类 A 有两个不同的子类 B 和 C;也就是说,子类 B 和 C 扩展了类 A。

2

  现在我们创建一个新的子类 D,它同时扩展了类 B 和类 C.请注意,我们有多重继承(D 扩展 B 和 C)、分层继承(B 和 C 扩展 A)和多级继承(D 扩展 A、B 和 C)。

  在菱形问题中,子类 B 和 C 从父类 A 继承方法。B 和 C 都重写继承的方法。但是B和C中的新方法相互冲突。

  终极子类 D 从其多个父级 B 和 C 继承两个独立且冲突的方法。不清楚应该使用哪种方法类D,因此存在歧义。其他 OOP 编程语言实现了各种方法来解决多重继承歧义。

  如何解决Java中的多重继承问题

  仅仅因为多重继承有问题并不意味着它没有用。在许多情况下,您可能希望一个类具有来自其他多个类的功能。

  想想当你成为一个非常成功的软件开发人员时,你会买到特斯拉跑车。它将从跑车类和电动汽车类中汲取特征。

  或者,也许您正在使用私有浏览器阅读本文,该文章具有在线数据隐私解决方案类和常规 Internet 浏览器类的功能。

  但是你不能在Java中扩展多个类。那么Java如何处理多重继承问题呢?

  好吧,它使用称为接口的结构。接口是抽象类型,用于指定要实现的类的行为。由于它们是抽象的,因此接口不包含有关其行为的详细说明。相反,这些类提供了接口行为的具体实现。

  接口具有以下几个定义特征:

  与类不同,您不实例化接口。相反,类实现接口

  接口仅包含公共常量定义和方法标头

  接口只能扩展其他接口,而不能扩展类

  接口可以扩展多个接口,类可以实现多个接口

  现在,我们可以有效地绕过接口的菱形问题。回想一下,只有接口只能扩展其他接口,并且任何需要多个继承特征的类都必须实现多个接口,我们可以重新定义菱形问题类。

  以前的类 A、B 和 C 现在变成了接口 A、B 和 C.接口 B 和 C 仍然扩展了接口 A,但这些接口中没有具体的函数,只有定义的行为。类 D 仍然是一个类,它负责接口 B 和 C 中的行为的具体实现。

  请注意此处的一个关键区别:D 类不是扩展接口 B 和 C。相反,它正在实施它们。因此,您实际上没有多重继承。相反,你只是重新定义了问题。

  了解继承对于任何有效的编码人员都是必要的。对于 Java 程序员来说,了解继承的局限性以及针对传统多重继承问题的内置 Java 解决方法同样重要。

  学习如何在Java中放置接口以重新创建多重继承的效果将提高您的效率和可雇用性。

tags:
声明:本站稿件版权均属千锋教育所有,未经许可不得擅自转载。
10年以上业内强师集结,手把手带你蜕变精英
请您保持通讯畅通,专属学习老师24小时内将与您1V1沟通
免费领取
今日已有369人领取成功
刘同学 138****2860 刚刚成功领取
王同学 131****2015 刚刚成功领取
张同学 133****4652 刚刚成功领取
李同学 135****8607 刚刚成功领取
杨同学 132****5667 刚刚成功领取
岳同学 134****6652 刚刚成功领取
梁同学 157****2950 刚刚成功领取
刘同学 189****1015 刚刚成功领取
张同学 155****4678 刚刚成功领取
邹同学 139****2907 刚刚成功领取
董同学 138****2867 刚刚成功领取
周同学 136****3602 刚刚成功领取
相关推荐HOT
开班信息
北京校区
  • 北京校区
  • 大连校区
  • 广州校区
  • 成都校区
  • 杭州校区
  • 长沙校区
  • 合肥校区
  • 南京校区
  • 上海校区
  • 深圳校区
  • 武汉校区
  • 郑州校区
  • 西安校区
  • 青岛校区
  • 重庆校区
  • 太原校区
  • 沈阳校区
  • 南昌校区
  • 哈尔滨校区