How to Achieve Abstraction in Java?

2025年3月31日 | 阅读 4 分钟

面向对象编程有四个支柱:抽象、多态、封装继承。在本节中,我们将讨论其中之一,即抽象。此外,我们还可以学习如何在 Java 中实现抽象

抽象

抽象是 OOPs 的一个特性。该特性允许我们隐藏实现细节,而只向用户展示编程的功能。因为用户不关心知道实现细节。从安全角度来看,这也是安全的。

让我们通过一个现实世界的例子来理解抽象。汽车是抽象的最佳范例。当我们驾驶汽车时,我们不知道汽车是如何行驶的内部组件是如何工作的?但我们知道如何驾驶汽车。这意味着不一定非要知道汽车是如何工作的,但知道如何驾驶汽车很重要。抽象也是如此。

相同的原则(正如我们在上面的例子中所解释的)也适用于Java 编程和任何OOPs。在编程语言中,代码实现对用户是隐藏的,并且只向用户显示或提供必要的功能。我们可以通过两种方式实现抽象:

  • 使用抽象类
  • 使用接口

使用抽象类

抽象类与普通 Java 类相同,唯一的区别是抽象类使用 abstract 关键字,而普通 Java 类不使用。我们在类名前使用 abstract 关键字来声明类为抽象类。

注意:使用抽象类,我们可以实现 0-100% 的抽象。

请记住,我们无法实例化(创建对象)抽象类。抽象类包含抽象方法和具体方法。如果我们要使用抽象类,我们必须从基类继承它。

如果类没有实现接口的所有方法,我们应该将类声明为抽象类。它提供了完整的抽象。这意味着字段默认是 public static final,方法是空的。

抽象类的语法是:

它用于在 OOPs 类层次结构顶部定义通用类型的行为,并使用其子类提供抽象类的实现细节。

让我们看一个抽象类的例子。

MainClass.java

输出

Abstract method called.

让我们来看另一个抽象类的例子,其中我们使用了一个非抽象方法。

Owner.java

输出

The car engine has been started.
The car engine is not started.

使用接口

在 Java 中,接口Java 类相似。唯一的区别是接口包含空方法(没有方法实现的类)和变量。换句话说,它是一组抽象方法(没有方法体的类)和静态常量。关于接口的重要一点是,每个方法都是publicabstract的,并且不包含任何构造函数。除了抽象之外,它还有助于实现多重继承。这些方法的实现由客户端在实现接口时提供。

注意:使用接口,我们可以实现 100% 的抽象。

将接口与实现分离是实现抽象的一种方式。集合框架是它的一个绝佳范例。

接口的特性

  • 我们可以实现完全的抽象。
  • 我们可以在一个类中使用多个接口,这可以实现多重继承。
  • 它也有助于实现松散耦合。

语法

为了在类中使用接口,Java 提供了称为implements的关键字。我们提供在接口中声明的方法的必要实现。

让我们看一个接口的例子。

Car.java

输出

The car engine has been started.
The car engine has been stopped.