抽象是面向对象编程的核心概念之一。抽象定义了创建应用程序组件的模型。抽象的实现取决于语言特定的特性和过程。
1. 什么是抽象?
抽象是将应用程序的内部细节隐藏在外部世界中的过程。抽象用于以简单的术语描述事物。它用于在应用程序和客户程序之间创建边界。
2. 现实生活中的抽象
抽象存在于几乎所有现实生活中的机器中。
- 您的汽车是抽象的一个很好的例子。您可以通过转动钥匙或按下启动按钮来启动汽车。您不需要知道引擎是如何启动的,您的汽车有哪些组件。汽车的内部实现和复杂逻辑对用户完全隐藏。
- 我们可以在微波炉中加热食物。我们按下一些按钮来设置定时器和食物类型。最后,我们得到了一顿热乎且美味的餐点。微波炉的内部细节对我们隐藏起来。我们以一种非常简单的方式获得了功能的访问。
3. 面向对象编程中的抽象
对象是面向对象编程的构建块。一个对象包含一些属性和方法。我们可以通过访问修饰符从外部世界隐藏它们。我们可以仅为其他程序提供所需功能和属性的访问。这是在OOPS中实现抽象的通用程序。
4. 抽象有哪些不同类型?
抽象有两种类型。
- 数据抽象
- 过程抽象
4.1) 数据抽象
当对象数据对外界不可见时,它创造了数据抽象。如果需要,可以通过一些方法访问对象的数据。

4.2) 过程抽象
我们不需要提供对象所有功能的详细信息。当我们隐藏用户操作中涉及的不同函数的内部实现时,就会创建过程抽象。

5. Java中的抽象
Java中的抽象是通过接口和抽象类实现的。它们用于为实际实现类创建基本实现或契约。Car.java:基本接口或抽象类
package com.journaldev.oops.abstraction;
public interface Car {
void turnOnCar();
void turnOffCar();
String getCarType();
}
ManualCar.java,AutomaticCar.java:Car的实现类。
package com.journaldev.oops.abstraction;
public class ManualCar implements Car {
private String carType = "Manual";
@Override
public void turnOnCar() {
System.out.println("turn on the manual car");
}
@Override
public void turnOffCar() {
System.out.println("turn off the manual car");
}
@Override
public String getCarType() {
return this.carType;
}
}
package com.journaldev.oops.abstraction;
public class AutomaticCar implements Car {
private String carType = "Automatic";
@Override
public void turnOnCar() {
System.out.println("turn on the automatic car");
}
@Override
public void turnOffCar() {
System.out.println("turn off the automatic car");
}
@Override
public String getCarType() {
return this.carType;
}
}
用户程序:让我们看一个测试程序,其中将使用Car函数。
package com.journaldev.oops.abstraction;
public class CarTest {
public static void main(String[] args) {
Car car1 = new ManualCar();
Car car2 = new AutomaticCar();
car1.turnOnCar();
car1.turnOffCar();
System.out.println(car1.getCarType());
car2.turnOnCar();
car2.turnOffCar();
System.out.println(car2.getCarType());
}
}
Source:
https://www.digitalocean.com/community/tutorials/what-is-abstraction-in-oops