在本 Java OOPs 概念教程中,咱们将学习四种主要的面向对象原则 -- 抽象、封装、继承和多态性。它们也被称为面向对象编程范式的四大支柱。java
- _抽象_是在不考虑无关细节的状况下公开实体基本细节的过程,以下降用户的复杂性。
- _封装_是将数据和对数据的操做捆绑到一个实体中的过程。
- _继承_用于从现有类型派生新类型,从而创建父子关系。
- _多态_使一个实体在不一样的上下文中具备不一样的含义。
将 OOP中的抽象与实时示例相关联时,它很容易理解。例如,当您开车时,您没必要担忧汽车的内部实际工做状况。您所关心的是经过方向盘,制动踏板,油门踏板等接口与汽车交互。在这里,您对汽车的了解是抽象的。
在计算机科学中,抽象是一个过程,经过该过程定义数据和程序的形式相似于其含义(语义),同时隐藏实现细节。
用更简单的术语来讲,抽象是隐藏与上下文无关或仅显示相关信息的信息,并经过将其与现实世界中的类似内容进行比较来简化信息。编程
一般,能够经过两种方式查看抽象:ide
数据抽象是从多个较小的数据类型中建立复杂的数据类型的方法,该类型更接近于现实生活中的实体。例如,Employee
类能够是具备各类小型关联的复杂对象。
函数
public class Employee { private Department department; private Address address; private Education education; //So on... }
所以,若是您想获取员工的信息,则要从Employee
对象那里询问信息-就像您在现实生活中同样,请询问员工自己。
学习
经过将复杂任务的动做序列隐藏在一个简单的方法调用中,能够实现控制抽象,所以能够从客户端隐藏执行任务的逻辑,而且未来能够更改该逻辑而不会影响客户端代码。设计
public class EmployeeManager { public Address getPrefferedAddress(Employee e) { //Get all addresses from database //Apply logic to determine which address is preferred //Return address } }
在上面的示例中,明天若是您要更改逻辑以使每次本地地址始终是首选地址,则将更改getPrefferedAddress()
方法内部的逻辑,而且客户端将不受影响。code
将类中的数据和方法与实现隐藏(经过访问控制)结合起来一般称为OOP中的封装。结果是具备特征和行为的数据类型。封装本质上既有信息隐藏又有实现隐藏。orm
“ 不管变化如何,将其封装 ” –著名的设计原则对象
信息隐藏**是经过使用访问控制修饰符(公共,私有,受保护的)implementation hiding
来完成的,而且是经过为类建立接口来实现的。继承
实现隐藏使设计人员能够自由修改对象如何履行职责。这在设计(甚至需求)可能发生变化的点上特别有价值。
让咱们以一个例子来使它更清楚。
class InformationHiding { //Restrict direct access to inward data private ArrayList items = new ArrayList(); //Provide a way to access data - internal logic can safely be changed in future public ArrayList getItems(){ return items; } }
interface ImplemenatationHiding { Integer sumAllItems(ArrayList items); } class InformationHiding implements ImplemenatationHiding { //Restrict direct access to inward data private ArrayList items = new ArrayList(); //Provide a way to access data - internal logic can safely be changed in future public ArrayList getItems(){ return items; } public Integer sumAllItems(ArrayList items) { //Here you may do N number of things in any sequence //Which you do not want your clients to know //You can change the sequence or even whole logic //without affecting the client } }
继承是面向对象编程中的另外一个重要概念。Java中的继承是一种机制,经过该机制,一个对象能够获取父对象的属性和行为。本质上是在类之间建立父子关系。在Java中,您将主要使用继承来实现代码的可重用性和可维护性。
关键字“ extends
”用于继承java中的类。extends
关键字表示您正在制做一个从现有类派生的新类。在Java术语中,被继承的类称为超类。新类称为子类。
子类从其超类继承全部非私有成员(字段,方法和嵌套类)。构造函数不是成员,所以它们不会被子类继承,可是能够从子类调用超类的构造函数。
例如
class Employee { private Department department; private Address address; private Education education; //So on... } class Manager extends Employee { private List<Employee> reportees; }
在上面的示例中,Manager
是Employee
部门的专门版本,能够重复使用部门,地址和来自Employee
班级的教育,以及定义其本身的报告人列表。
多态是一种能力,经过这种能力,咱们能够建立在不一样程序环境中表现不一样的函数或引用变量。
在Java语言中,多态本质上被认为是两个版本:
上面是四个Java OOP概念,我建议您对其中的每一个概念都有很好的了解。
学习愉快!
更多精彩请关注