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

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

5. Java中的抽象
在Java中,抽象是通过接口和抽象类来实现的。它们用于创建实际实现类的基本实现或契约。Car.java:基本接口或抽象类。
package com.Olivia.oops.abstraction;
public interface Car {
void turnOnCar();
void turnOffCar();
String getCarType();
}
ManualCar.java和AutomaticCar.java是Car的实现类。
package com.Olivia.oops.abstraction;
public class ManualCar implements Car {
private String carType = "手动挡";
@Override
public void turnOnCar() {
System.out.println("启动手动挡汽车");
}
@Override
public void turnOffCar() {
System.out.println("关闭手动挡汽车");
}
@Override
public String getCarType() {
return this.carType;
}
}
package com.Olivia.oops.abstraction;
public class AutomaticCar implements Car {
private String carType = "自动挡";
@Override
public void turnOnCar() {
System.out.println("启动自动挡汽车");
}
@Override
public void turnOffCar() {
System.out.println("关闭自动挡汽车");
}
@Override
public String getCarType() {
return this.carType;
}
}
用户程序:我们来看一个测试程序,该程序将使用到汽车功能。
package com.Olivia.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());
}
}
客户端程序只知道汽车和汽车提供的功能。内部实现细节对客户端程序是隐藏的。参考资料:维基百科,Oracle文档。