Java 中的 extends vs. implements10 Sept 2024 | 5 分钟阅读 Java 是一种多功能且广泛使用的编程语言,它提供了许多功能来开发复杂而高效的软件应用程序。Java 面向对象编程中的两个主要概念是扩展 (extends) 和实现 (implements)。这两个关键字在类关系以及类和网络如何交互方面起着重要作用。在本节中,我们将探讨 Java 中 extends 和 implements 的基本区别以及何时使用它们。 Extends:类之间的继承extends 关键字用于建立类之间的属性关系。当一个类扩展另一个类时,它继承了超类(被扩展的类)的所有属性和行为(字段和方法)。从这个意义上说,子类是超类的一个基本组成部分。它通常被称为“is-a”关系,其中子类是超类的一种“is-a”。 这是一个基本示例 在上面的代码中,Car 类扩展了 Vehicle 类。因此,Car 类继承了 Vehicle 中的 start() 方法,并且还可以定义自己的方法 accelerate()。这是一个明显的继承示例,其中 Car 大部分拥有 Vehicle 的特性。 Implements:接口功能当一个类想要遵循一个接口时,将使用 "implements" 关键字。在 Java 中,接口定义了一个契约,规定了实现该接口的每个类必须提供的具体方法签名。类可以实现多个接口,从而允许它们表现出不同的行为。 这是一个示例 在此代码中的 Bird 类实现了 Flyable 接口。通过这样做,它承诺为 fly() 方法提供实现。它还可以定义自己的方法,例如 chirp()。这指的是接口实现的概念,用于在 Java 中访问一组属性。 主要区别:Extends vs Implements
何时使用 Extends 和 Implements?当我们要创建一个继承现有类的行为并且是唯一的类时,请使用 "extends"。这通常发生在实例化分层类时,其中每个子类修复并扩展超类的功能。 如果我们想为类定义一个契约,请使用 "implements" 来确保它提供指定的方法。当我们需要多态性并允许不同对象通过接口共享常见操作时,这非常有用。 这是一个完整的 Java 代码示例,它演示了 extends 和 implements 的用法,以区分类继承和接口实现。 ImplementsExample.java 输出 Circle Area: 78.53981633974483 Rectangle Area: 24.0 Drawing a circle. Drawing a rectangle. 在此代码中,Circle 和 Rectangle 类都扩展了 Shape 类,通过类继承(使用 "extends")继承了 area 方法。此外,这两个类都实现了 Drawable 接口,为 draw 方法提供了实现,演示了接口实现(使用 "implements")。 main() 方法创建了 Circle 和 Rectangle 类的实例,计算了它们各自的面积,并调用了 draw 方法来展示类继承和接口实现的操作差异。 以下是输出的详细说明 Circle 对象计算并打印其面积,约为 78.54 (π * 5 * 5)。 Rectangle 对象计算并打印其面积,为 24 (4 * 6)。 调用 Circle 类的 draw 方法,打印“Drawing a circle.”。 调用 Rectangle 类的 draw 方法,打印“Drawing a rectangle.”。 输出演示了类继承("extends")和接口实现("implements")的操作差异。Circle 和 Rectangle 类都从 Shape 类继承了 area 方法(类继承),并且它们实现了 Drawable 接口以提供特定的绘图行为(接口实现)。 总而言之,"extends" 用于类属性,而 "implements" 用于接口实现。两者之间的选择取决于您的设计需求以及我们希望在 Java 代码中建立的关系。理解这些概念对于构建结构良好且可维护的 Java 应用程序至关重要。 下一个主题Java 中的二维数组排序 |
编程通过使用算术函数(包括加、减、乘、除和模运算)来处理现实世界的问题。Java 的面向对象特性允许开发人员将算术运算放入方法中,从而更容易实现代码的可重用性和可理解性。在本节中,我们将创建 Java 程序来...
5 分钟阅读
在数学和计算机科学领域的许多应用程序和方法中,直线都很重要。在给定的 2D 坐标集中找到尽可能多的点可以构成一条直线是一个典型的问题。这个问题应用包括机器学习、计算机...
5 分钟阅读
错误是在程序执行时出现的,问题、bug 或人为错误。异常会中断程序的流程并异常终止程序。不建议异常终止程序,因此我们需要...
阅读 6 分钟
生日悖论(或困境)是概率论中的一个概念。尽管这并不构成逻辑矛盾意义上的悖论,但它之所以被称为悖论,是因为数学现实与常识相悖:大多数人认为……
5 分钟阅读
介绍抽象是隐藏实体细节并关注实体基本特征的过程。在面向对象编程中,抽象是一个重要概念,它有助于开发人员在代码中对现实世界的实体进行建模。Java 语言完全融入了抽象,这是一个关键的理念...
阅读 4 分钟
在 Java 中,按值对 HashMap 进行排序很复杂,因为没有直接的方法可用。如果我们想按值对 HashMap 进行排序,我们应该创建一个 Comparator。它根据值比较两个元素。之后,获取 Map 中的元素集……
阅读 2 分钟
在 LTS 版本 11 之后的版本。JDK 12 是 6 个月发布周期的一部分。于 2019 年 3 月 19 日发布,它是一个非 LTS 版本,不提供长期支持。SE 平台的开源参考实现是...
5 分钟阅读
给定一个包含 n 个数字(正数或负数)的数组 arr。任务是返回重新排列整数元素的数组,使得没有两个相邻元素相等。如果有多个有效排列,则返回任何一个...
阅读 15 分钟
Java 17 于 2021 年 9 月发布,取代 Java 11 成为最新的 LTS(长期支持)版本。目前最关键的问题是,“Java 17 包含哪些 JDK(14)增强提案(JEP)?” 其中十个是新功能,两个已删除,两个...
阅读 19 分钟
在 Java 中,LRU 缓存代表“最近最少使用缓存”。这意味着 LRU 缓存是最近使用最少的缓存,并且缓存大小或容量是固定的,允许用户同时使用 get() 和 put() 方法...
7 分钟阅读
我们请求您订阅我们的新闻通讯以获取最新更新。
我们提供所有技术(如 Java 教程、Android、Java 框架)的教程和面试问题
G-13, 2nd Floor, Sec-3, Noida, UP, 201301, India