在本 Java OOPs 概念教程中,我们将学习四种主要的面向对象原则 -- 抽象、封装、继承和多态性。它们也被称为面向对象编程范式的四大支柱。

  1. _抽象_是在不考虑无关细节的情况下公开实体基本细节的过程,以降低用户的复杂性。
  2. _封装_是将数据和对数据的操作捆绑到一个实体中的过程。
  3. _继承_用于从现有类型派生新类型,从而建立父子关系。
  4. _多态_使一个实体在不同的上下文中具有不同的含义。

1.抽象

将 OOP中的抽象与实时示例相关联时,它很容易理解。例如,当您开车时,您不必担心汽车的内部实际工作情况。您所关心的是通过方向盘,制动踏板,油门踏板等接口与汽车交互。在这里,您对汽车的了解是抽象的。
在计算机科学中,抽象是一个过程,通过该过程定义数据和程序的形式类似于其含义(语义),同时隐藏实现细节。
用更简单的术语来说,抽象是隐藏与上下文无关或仅显示相关信息的信息,并通过将其与现实世界中的相似内容进行比较来简化信息。

通常,可以通过两种方式查看抽象:

1.1数据抽象

数据抽象是从多个较小的数据类型中创建复杂的数据类型的方法,该类型更接近于现实生活中的实体。例如,Employee类可以是具有各种小型关联的复杂对象。

public class Employee
{
private Department department;
private Address address;
private Education education;
//So on...
}

因此,如果您想获取员工的信息,则要从Employee对象那里询问信息-就像您在现实生活中一样,请询问员工本身。

1.2控制抽象

通过将复杂任务的动作序列隐藏在一个简单的方法调用中,可以实现控制抽象,因此可以从客户端隐藏执行任务的逻辑,并且将来可以更改该逻辑而不会影响客户端代码。

public class EmployeeManager
{
public Address getPrefferedAddress(Employee e)
{
//Get all addresses from database
//Apply logic to determine which address is preferred
//Return address
}
}

在上面的示例中,明天如果您要更改逻辑以使每次本地地址始终是首选地址,则将更改getPrefferedAddress()方法内部的逻辑,并且客户端将不受影响。

2.封装

将类中的数据和方法与实现隐藏(通过访问控制)结合起来通常称为OOP中的封装。结果是具有特征和行为的数据类型。封装本质上既有信息隐藏又有实现隐藏。

无论变化如何,将其封装 ” –著名的设计原则


信息隐藏**是通过使用访问控制修饰符(公共,私有,受保护的)implementation hiding来完成的,并且是通过为类创建接口来实现的。

实现隐藏使设计人员可以自由修改对象如何履行职责。这在设计(甚至需求)可能发生变化的点上特别有价值。
让我们以一个例子来使它更清楚。

2.1信息隐藏

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;
}
}

2.2实现隐藏

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
}
}

3.继承

继承是面向对象编程中的另一个重要概念。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;
}

在上面的示例中,ManagerEmployee部门的专门版本,可以重复使用部门,地址和来自Employee班级的教育,以及定义其自己的报告人列表。

4.多态性

多态是一种能力,通过这种能力,我们可以创建在不同程序环境中表现不同的函数或引用变量。
在Java语言中,多态本质上被认为是两个版本:

  • 编译时多态(静态绑定或方法重载
  • 运行时多态(动态绑定或方法覆盖

上面是四个Java OOP概念,我建议您对其中的每个概念都有很好的了解。
学习愉快!
更多精彩请关注

最新文章

  1. Buffer类
  2. MySQL AHI 实现解析
  3. [PL/SQL] 如何规避异常ORA-01403
  4. webstorm调试Node的时候配置
  5. PLSQL_Oracle簇表和簇表管理Index clustered tables(案例)
  6. ios中怎么样调节占位文字与字体大小在同一高度
  7. HeadFirst 12 (web应用安全)
  8. php中preg_match用户名正则实例
  9. LinkButton( 按钮)
  10. java环境变量配置四种方法
  11. 关于一些基础的Java问题的解答(一)
  12. 测者的测试技术手册:测试应该关注java.util.List.subList的坑
  13. mongoDB,mongoose,没有数组就添加,如果有了数组,就向数组中添加新元素
  14. app中页面滑动,防止a链接误触
  15. 26【python】sprintf风格的字符串
  16. day06作业---字典循环
  17. varchar和nvarchar的区别 数据来证明
  18. 基于 Laravel 开发博客应用系列 —— 从测试开始(二):使用Gulp实现自动化测试
  19. 【转】jQuery最佳实践
  20. Angular5学习笔记 - 创建服务(九)

热门文章

  1. mysql 常用sql操作总结
  2. 3分钟接入socket.io使用
  3. ReactNative---ref的用法和技巧
  4. 如何理解 HTMLTestRunner 中 test (result)?UnitTest是如何运行的?
  5. Typora常用快捷键
  6. C# 解析JSON遇到以错误提示:应为状态“Element”。。遇到名称为“”、命名空间为“”的“Text”。
  7. ros之发布者和订阅者协同工作
  8. web语义化这个坑
  9. java-zhisji
  10. 《Android Studio实战 快速、高效地构建Android应用》--四、Git入门