什么是 OOPS 中的抽象?

抽象是核心(/community/tutorials/oops-concepts-java-example)的概念之一。抽象定义了一个模型来创建一个应用程序组件。

1、什么是抽象?

抽象是将应用程序的内部细节隐藏在外部世界的过程,用来简单地描述事物,用来创建应用程序和客户端程序之间的界限。

2、现实生活中的抽象

抽象存在于几乎所有现实生活机器中。

  • 你的汽车是一个很好的抽象的例子。你可以通过转动键或按下启动按钮来启动一辆车。你不需要知道发动机是如何启动的,你的汽车的所有组件都有哪些。汽车内部实现和复杂的逻辑完全隐藏在用户身上 *我们可以用微波加热我们的食物。我们按下一些按钮来设置计时器和食物类型。最后,我们得到了一顿热和美味的饭菜。微波内部的细节是从我们身上隐藏的。我们以非常简单的方式获得了功能。

3、OOPS中的抽象

对象是对象导向编程的构建块,一个对象包含一些属性和方法,我们可以通过访问修改器来隐藏它们,我们只能为其他程序提供所需的功能和属性。

四、抽象的不同类型有哪些?

有两种类型的抽象。

  1. 数据抽象
  2. 过程抽象

(四)数据抽象

当对象数据对外世界看不见时,它会创建数据抽象性,必要时通过一些方法提供对象数据的访问。

Data Abstraction

(四)抽象过程

我们不需要提供对一个对象的所有函数的详细信息,当我们隐藏用户操作中的不同函数的内部实现时,它会产生流程抽象。

Process Abstraction

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

Published At
Categories with 技术
Tagged with
comments powered by Disqus