OOPS中的抽象是什么?
时间:2020-02-23 14:41:58 来源:igfitidea点击:
抽象是面向对象编程的核心概念之一。
抽象定义用于创建应用程序组件的模型。
抽象的实现取决于特定于语言的功能和过程。
1.什么是抽象?
抽象是从外部世界隐藏应用程序内部细节的过程。
抽象用于用简单的术语描述事物。
它用于在应用程序和客户端程序之间建立边界。
2.现实生活中的抽象
几乎所有现实生活中的机器中都存在抽象。
您的汽车是抽象的一个很好的例子。
您可以通过转动钥匙或者按启动按钮来启动汽车。
您无需知道发动机的启动方式,汽车的所有部件。
汽车的内部实现和复杂的逻辑对用户完全隐藏了。我们可以用微波炉加热食物。
我们按一些按钮来设置计时器和食物类型。
最后,我们得到一顿美味的热饭。
微波内部的细节对我们来说是隐藏的。
我们已经以非常简单的方式获得了对功能的访问。
3. OOPS中的抽象
对象是面向对象编程的构建块。
一个对象包含一些属性和方法。
我们可以通过访问修饰符将它们隐藏在外部世界中。
我们只能提供对其他程序的必需功能和属性的访问。
这是在OOPS中实现抽象的一般过程。
4.抽象有哪些不同类型?
有两种抽象类型。
- 数据抽象
- 流程抽象
4.1)数据抽象
当对象数据对外部世界不可见时,它将创建数据抽象。
如果需要,可以通过某些方法访问对象的数据。
数据抽象
4.2)流程抽象
我们不需要提供有关对象所有功能的详细信息。
当我们隐藏用户操作中涉及的不同功能的内部实现时,它将创建流程抽象。
流程抽象
5. Java中的抽象
Java中的抽象是通过接口和抽象类实现的。
它们用于为实际的实现类创建基本实现或者合同。
Car.java:基本接口或者抽象类
package com.theitroad.oops.abstraction; public interface Car { void turnOnCar(); void turnOffCar(); String getCarType(); }
ManualCar.java,AutomaticCar.java:Car的实现类。
package com.theitroad.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.theitroad.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.theitroad.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()); } }
客户端程序仅了解Car以及Car提供的功能。
内部实现细节从客户端程序中隐藏。