抽象是核心(/community/tutorials/oops-concepts-java-example)的概念之一。抽象定义了一个模型来创建一个应用程序组件。
1、什么是抽象?
抽象是将应用程序的内部细节隐藏在外部世界的过程,用来简单地描述事物,用来创建应用程序和客户端程序之间的界限。
2、现实生活中的抽象
抽象存在于几乎所有现实生活机器中。
- 你的汽车是一个很好的抽象的例子。你可以通过转动键或按下启动按钮来启动一辆车。你不需要知道发动机是如何启动的,你的汽车的所有组件都有哪些。汽车内部实现和复杂的逻辑完全隐藏在用户身上 *我们可以用微波加热我们的食物。我们按下一些按钮来设置计时器和食物类型。最后,我们得到了一顿热和美味的饭菜。微波内部的细节是从我们身上隐藏的。我们以非常简单的方式获得了功能。
3、OOPS中的抽象
对象是对象导向编程的构建块,一个对象包含一些属性和方法,我们可以通过访问修改器来隐藏它们,我们只能为其他程序提供所需的功能和属性。
四、抽象的不同类型有哪些?
有两种类型的抽象。
- 数据抽象
- 过程抽象
(四)数据抽象
当对象数据对外世界看不见时,它会创建数据抽象性,必要时通过一些方法提供对象数据的访问。
(四)抽象过程
我们不需要提供对一个对象的所有函数的详细信息,当我们隐藏用户操作中的不同函数的内部实现时,它会产生流程抽象。
5、Java中的抽象
在Java中,抽象化是通过 [界面]( / 社区 / 教程 / 界面 - 在Java)和 [抽象类]( / 社区 / 教程 / 抽象类 - 在Java)实现的。
1package com.journaldev.oops.abstraction;
2
3public interface Car {
4
5 void turnOnCar();
6
7 void turnOffCar();
8
9 String getCarType();
10}
ManualCar.java, AutomaticCar.java:汽车的实施类别。
1package com.journaldev.oops.abstraction;
2
3public class ManualCar implements Car {
4
5 private String carType = "Manual";
6
7 @Override
8 public void turnOnCar() {
9 System.out.println("turn on the manual car");
10 }
11
12 @Override
13 public void turnOffCar() {
14 System.out.println("turn off the manual car");
15 }
16
17 @Override
18 public String getCarType() {
19 return this.carType;
20 }
21}
1package com.journaldev.oops.abstraction;
2
3public class AutomaticCar implements Car {
4
5 private String carType = "Automatic";
6
7 @Override
8 public void turnOnCar() {
9 System.out.println("turn on the automatic car");
10 }
11
12 @Override
13 public void turnOffCar() {
14 System.out.println("turn off the automatic car");
15 }
16
17 @Override
18 public String getCarType() {
19 return this.carType;
20 }
21}
用户程序:让我们来看看测试程序,在那里将使用汽车功能。
1package com.journaldev.oops.abstraction;
2
3public class CarTest {
4
5 public static void main(String[] args) {
6 Car car1 = new ManualCar();
7 Car car2 = new AutomaticCar();
8
9 car1.turnOnCar();
10 car1.turnOffCar();
11 System.out.println(car1.getCarType());
12
13 car2.turnOnCar();
14 car2.turnOffCar();
15 System.out.println(car2.getCarType());
16
17 }
18
19}
客户端程序只知道汽车和汽车提供的功能。内部实施细节隐藏在客户端程序中。 参考: [Wikipedia](https://en.wikipedia.org/wiki/Abstraction_(computer_science), Oracle Docs