java面向对象入门(1)-入门介绍
在本 Java OOPs 概念教程中,我们将学习四种主要的面向对象原则 -- 抽象、封装、继承和多态性。它们也被称为面向对象编程范式的四大支柱。
- _抽象_是在不考虑无关细节的情况下公开实体基本细节的过程,以降低用户的复杂性。
- _封装_是将数据和对数据的操作捆绑到一个实体中的过程。
- _继承_用于从现有类型派生新类型,从而建立父子关系。
- _多态_使一个实体在不同的上下文中具有不同的含义。
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;
}
在上面的示例中,Manager
是Employee
部门的专门版本,可以重复使用部门,地址和来自Employee
班级的教育,以及定义其自己的报告人列表。
4.多态性
多态是一种能力,通过这种能力,我们可以创建在不同程序环境中表现不同的函数或引用变量。
在Java语言中,多态本质上被认为是两个版本:
- 编译时多态(静态绑定或方法重载)
- 运行时多态(动态绑定或方法覆盖)
上面是四个Java OOP概念,我建议您对其中的每个概念都有很好的了解。
学习愉快!
更多精彩请关注
java面向对象入门(1)-入门介绍的更多相关文章
- 085 01 Android 零基础入门 02 Java面向对象 01 Java面向对象基础 02 构造方法介绍 04 构造方法调用
085 01 Android 零基础入门 02 Java面向对象 01 Java面向对象基础 02 构造方法介绍 04 构造方法调用 本文知识点:构造方法调用 说明:因为时间紧张,本人写博客过程中只是 ...
- 084 01 Android 零基础入门 02 Java面向对象 01 Java面向对象基础 02 构造方法介绍 03 构造方法-this关键字
084 01 Android 零基础入门 02 Java面向对象 01 Java面向对象基础 02 构造方法介绍 03 构造方法-this关键字 本文知识点:构造方法-this关键字 说明:因为时间紧 ...
- 083 01 Android 零基础入门 02 Java面向对象 01 Java面向对象基础 02 构造方法介绍 02 构造方法-带参构造方法
083 01 Android 零基础入门 02 Java面向对象 01 Java面向对象基础 02 构造方法介绍 02 构造方法-带参构造方法 本文知识点:构造方法-带参构造方法 说明:因为时间紧张, ...
- 082 01 Android 零基础入门 02 Java面向对象 01 Java面向对象基础 02 构造方法介绍 01 构造方法-无参构造方法
082 01 Android 零基础入门 02 Java面向对象 01 Java面向对象基础 02 构造方法介绍 01 构造方法-无参构造方法 本文知识点:构造方法-无参构造方法 说明:因为时间紧张, ...
- JavaSE学习总结(四)——Java面向对象十分钟入门
面向对象编程(Object Oriented Programming,OOP)是一种计算机模拟人类的自然思维方式的编程架构技术,解决了传统结构化开发方法中客观世界描述工具与软件结构的不一致性问题.Ja ...
- Java面向对象之封装 入门实例(一)
一.基础概念 (一)面向对象的三大特征: 1.封装 2.继承 3.多态 (二)封装:隐藏实现细节,对外提供公共的访问方式(接口). 封装的体现之一:将属性都 ...
- Java面向对象之构造函数 入门实例
一.基础概念 1.什么时候定义构造函数: 当对象创建时,需要对象必须具备的内容,通过构造函数完成. 2.一般函数和构造函数的区别: 定义上:构造函数只为对象的初始化,只执行一次.一般函数定义对象应该具 ...
- 094 01 Android 零基础入门 02 Java面向对象 02 Java封装 01 封装的实现 03 # 088 01 Android 零基础入门 02 Java面向对象 02 Java封装 02 static关键字 04 static关键字(续)
094 01 Android 零基础入门 02 Java面向对象 02 Java封装 01 封装的实现 03 # 088 01 Android 零基础入门 02 Java面向对象 02 Java封装 ...
- 098 01 Android 零基础入门 02 Java面向对象 03 综合案例(学生信息管理) 02 案例分析及实现 02 编写并测试Subject类
098 01 Android 零基础入门 02 Java面向对象 03 综合案例(学生信息管理) 02 案例分析及实现 02 编写并测试Subject类 本文知识点:编写并测试Subject类 说明: ...
- 099 01 Android 零基础入门 02 Java面向对象 03 综合案例(学生信息管理) 02 案例分析及实现 03 编写并测试Student类
099 01 Android 零基础入门 02 Java面向对象 03 综合案例(学生信息管理) 02 案例分析及实现 03 编写并测试Student类 本文知识点:编写并测试Subject类 说明: ...
随机推荐
- swoole(PHP异步网络通信引擎)的结构和运行流程
swoole结构说明和运行流程 主要分为三个部分: 1.Master:swoole的主进程 处理swoole核心的事件驱动, 它包含多个线程(蓝色Reactor), 所有事件的监听都在Reactor实 ...
- 工具之sort
转自:http://www.cnblogs.com/dong008259/archive/2011/12/08/2281214.html sort命令是帮我们依据不同的数据类型进行排序,其语法及常用参 ...
- 提醒你一下, 你真的很垃圾, 创建一个maven 的web 项目都忘记了
1. 创建项目 2. 选择maven 项目 3 然后选择创建 web 项目的模板 (结尾是webapp 的) 4. 选择自己的maven 的配置文件 setting.xml 以及自己的maven ...
- SpringMVC进阶(二)
一.高级参数绑定 1.1. 绑定数组 Controller方法中可以用String[]接收,或者pojo的String[]属性接收.两种方式任选其一即可. /** * 包装类型 绑定数组类型,可以使用 ...
- ATL的GUI程序设计(1)
from:http://blog.titilima.com/atlgui-1.html 第一章 不能免俗的"Hello, World!" 在这一章里,就像所有的入门级教程一样,我也 ...
- html作业记录
<html> <head> <title>Hello World</title> </head> <body> <!-- ...
- Ops: 高效组合命令集合
简介 本篇博客收集一些常用的复杂命令组合,这些命令组合能够高效的定位.分析.处理一些问题,希望对需要的小伙伴有所帮助. 命令集合 批量备份文件 将名称为config.xml的文件查找出来,并在原目录备 ...
- 题解 bzoj3688【折线统计】
考虑 \(dp\) . 首先把所有节点按 \(x\) 从小到大排序是很有必要的. 记 f[i][j][0] 表示满足以第 \(i\) 个节点做折线结尾,选取的点集 \(S\) 满足 \(f(S)=j\ ...
- python如何删除二维或者三维数组/列表中某维的空元素
如题,个人在使用python进行数据预处理过程中出现的问题,抽象成删除三维列表中某维为空的问题. 一.首先来看一下三维数组/列表的结构 仔细看下图就会很清楚了: 轴0即是去除第一个外括号后第一层(我把 ...
- php面试笔记(3)-php基础知识-运算符
本文是根据慕课网Jason老师的课程进行的PHP面试知识点总结和升华,如有侵权请联系我进行删除,email:guoyugygy@163.com 在面试中,考官往往喜欢基础扎实的面试者,而运算符相关的考 ...