漫谈Java中的OOPS
什么是OOPS?
面向对象编程是一种编程概念,其工作原理是对象是程序中最重要的部分。它允许用户创建他们想要的对象,然后创建处理这些对象的方法。操作这些对象以获得结果是面向对象编程的目标。
面向对象编程通常称为OOP,用于Java等现代编程语言
核心OOPS概念
1)类
该类是一组类似的实体。它只是一个逻辑组件,而不是物理实体。例如,如果你有一个名为“昂贵的汽车”的类,它可能有梅赛德斯,宝马,丰田等物品。它的属性(数据)可以是这些汽车的价格或速度。虽然可以使用这些车辆进行驾驶,倒车,制动等方法。
2)对象
可以将对象定义为类的实例,并且程序中可以有多个类的实例。对象包含数据和函数,它们对数据进行操作。例如 - 椅子,自行车,标记,笔,桌子,汽车等。
3)继承
继承是一种OOPS概念,其中一个对象获取父对象的属性和行为。它在两个类之间创建了父子关系。它为组织和构建任何软件提供了强大而自然的机制。
4)多态性
多态性是指变量,对象或函数采用多种形式的能力。例如,在英语中,动词_运行_具有不同的含义,如果将您它_用于笔记本电脑_,_脚踏竞赛_状语从句:商务。在这里,我们基于一起与其使用的其他词语来理解_运行_的含义。同样也适用于多态性。
5)抽象
抽象是表示基本特征而不包括背景细节的行为。这是一种创建适合特定应用程序的新数据类型的技术。例如,在驾驶汽车时,您不必担心其内部工作。在这里你只需要关注方向盘,齿轮,加速器等零件。
6)封装
封装是一种包装数据和代码的OOP技术。在这个OOPS概念中,类的变量总是对其他类隐藏。它只能使用当前类的方法访问。例如 - 在学校里,没有班级,学生就不可能存在。
7)关联
关联是两个对象之间的关系。它定义了对象之间的多样性。在OOP概念中,所有对象都有其独立的生命周期,并且没有所有者。例如,许多学生可以与一位教师联系,而一名学生也可以与多位教师联系。
8)聚合
在这种技术中,所有对象都有其独立的生命周期。但是,所有权使得子对象不能属于另一个父对象。例如,考虑班级/对象部门和教师。在这里,单个教师不能属于多个部门,但即使我们删除了部门,教师对象也永远不会被销毁。
9)组合
组合是聚合的一种特殊形式。它也被称为“死亡”关系。子对象没有生命周期,因此当父对象删除时,所有子对象也将自动删除。为此,我们举一个房子和房间的例子。任何房子都可以有几个房间。一个房间不能成为两个不同房屋的一部分。所以,如果你删除房子的房间也将被删除。
OOPS的优点:
- OOP为程序提供易于理解和清晰的模块化结构。
- 为面向对象程序创建的对象可以在其他程序中重用。因此它节省了大量的开发成本。
- 大型程序很难编写,但如果开发和设计团队遵循OOPS概念,那么他们可以更好地设计并具有最小的缺陷。
- 它还增强了程序模块性,因为每个对象都是独立存在的
借助于示例,将OOPS与其他编程风格进行比较
让我们通过示例来理解OOP与其他编程方法的不同之处。
编程语言可以分为3种主要类型
- 非结构化编程语言:顺序具有控制流的所有编程语言中最原始的语言在程序中重复代码
- 结构化编程语言:非具有顺序控制流函数的使用网求允许重用代码。
- 面向对象的编程:将数据和动作结合在一起。
让我们通过一个例子来理解这三种类型。
假设您要创建具有类似功能的银行软件
- 存款
- 取款
- 显示余额
非结构化编程语言
所有编程语言中最早的是非结构化编程语言。非结构化编程语言中的银行应用程序的基本代码将具有一个帐号的两个变量和帐户余额的另一个变量
int account_number = 20;
int account_balance = 100;
假设存入100美元。
account_balance = account_balance + 100
接下来,您需要显示帐户余额。
printf("Account Number=%d",account_number)
printf("Account Balance=%d",account_balance)
现在撤回50美元的金额。
account_balance = account_balance - 50
同样,您需要显示帐户余额。
printf("Account Number=%d",account_number)
printf("Account Balance=%d",account_balance)
对于任何进一步的存款或取款操作 - 您将代码重复重复相同的行。
结构化编程
随着结构化编程的到来,代码上的重复行被放入诸如函数或方法之类的结构中。只要需要,就可以对函数进行简单的调用。
面向对象编程
在我们的程序中,我们处理数据或对数据执行特定操作。
实际上,在任何软件程序中拥有数据并对该数据执行某些操作是非常基本的特征。
软件编程专家思想结合数据和操作。因此,面向对象编程的诞生通常被称为OOPS。
OOPS中的相同代码将具有相同的数据,并且对数数执行某些操作。
Class Account{
int account_number;
int account_balance;
public void showdata(){
system.out.println(“Account Number”+account_number)
system.outprintln(“Account Balance”+ account_balance)
}
}
通过结合数据和行动,我们将获得比结构编程更多的优势,即
- 抽象化
- 封装
- 遗产
- 多态性
“不积跬步,无以至千里”,希望未来的你能:有梦为马 随处可栖!加油,少年!
关注公众号:「Java 知己」,每天更新Java知识哦,期待你的到来!
- 发送「1024」,免费领取 30 本经典编程书籍。
- 发送「Group」,与 10 万程序员一起进步。
- 发送「面试」,领取BATJ面试资料、面试视频攻略。
- 发送「JavaEE 实战」,领取《JavaEE 实战》系列视频教程。
- 发送「玩转算法」,领取《玩转算法》系列视频教程。

漫谈Java中的OOPS的更多相关文章
- Java中的Set, List, Map漫谈
在编程语言中,集合是指代表一组对象的对象.Java平台专门有一个集合框架(Collections Framework).集合框架是指表示和操作集合的统一架构,隔离了集合的操作和实现细节. 集合框架中的 ...
- 理解Java中的抽象
在计算机科学中,抽象是一种过程,在这个过程中,数据和程序定义的形式与代表的内涵语言相似,同时隐藏了实现细节. 抽象:一个概念或者想法不和任何特定的具体实例绑死. 目录 什么是抽象 抽象的形式 如何在J ...
- 一看你就懂,超详细java中的ClassLoader详解
本篇文章已授权微信公众号 guolin_blog (郭霖)独家发布 ClassLoader翻译过来就是类加载器,普通的Java开发者其实用到的不多,但对于某些框架开发者来说却非常常见.理解ClassL ...
- java中的进程与线程及java对象的内存结构【转】
原文地址:http://rainforc.iteye.com/blog/2039501 1.实现线程的三种方式: 使用内核线程实现 内核线程(Kernel Thread, KLT)就是 ...
- 重温java中的String,StringBuffer,StringBuilder类
不论什么一个系统在开发的过程中, 相信都不会缺少对字符串的处理. 在 java 语言中, 用来处理字符串的的类经常使用的有 3 个: String.StringBuffer.StringBuilder ...
- 你所不知道的,Java 中操作符的秘密?
在 Java 编程的过程中,我们对数据的处理,都是通过操作符来实现的.例如,用于赋值的赋值操作符.用于运算的运算操作符等.用于比较的比较操作符,还包括逻辑操作符.按位操作符.移位操作符.三元操作符等等 ...
- 【转】一看你就懂,超详细java中的ClassLoader详解
http://blog.csdn.net/briblue/article/details/54973413 ClassLoader翻译过来就是类加载器,普通的java开发者其实用到的不多,但对于某些框 ...
- 一看你就懂,超详细java中的ClassLoader详解(转)
转载地址 http://blog.csdn.net/briblue/article/details/54973413 目录(?)[-] Class文件的认识 你还记得java环境变量吗 J ...
- Java中Object类hashCode的底层实现
Java中Object类hashCode的底层实现 openjdk\jdk\src\share\native\java\lang\Object.c 42 static JNINativeMethod ...
随机推荐
- 如何以python风格高逼格的改成购物车逻辑
之前有一篇博文写到关于购物车的业务逻辑,分别运用cookie和redis存储未登录和登录用户的购物车数据,虽然已经很好的完成了业务逻辑,但是会发现代码的冗余很严重,也不够具有python特色,今天就让 ...
- RobotFrameWork Web自动化测试环境搭建
前言 Robot Framework是一款python编写的功能自动化测试框架.具备良好的可扩展性,支持关键字驱动,可以同时测试多种类型的客户端或者接口,可以进行分布式测试执行.主要用于轮次很多的验收 ...
- F#周报2019年第34期
新闻 高效的F#,提示与技巧 Fable 社区资源 Visual Studio提示与技巧:为.NET增加生产力 无风险地尝试Compositional IT的培训包--如果没有增加任何价值,可以得到完 ...
- 玩转 SpringBoot 2 快速搭建 | Spring Tool Suite篇
Spring Tool Suite (STS) 工具介绍 我个人比较推荐使用 Spring Tool Suite(STS),之所以推荐使用 Spring Tool Suite(STS) ,是因为它是 ...
- Http协议4个新的http状态码:428、429、431、511;
1.428 Precondition Required (要求先决条件) 先决条件是客户端发送 HTTP 请求时,必须要满足的一些预设条件.一个好的例子就是 If-None-Match 头,经常用在 ...
- [Python] Django框架入门5——静态文件、中间件、上传图片和分页
说明: 本文主要描述Django其他的内容,涉及静态文件处理.中间件.上传文件.分页等. 开发环境:win10.Python3.5.Django1.10. 一.静态文件处理 在Django项目的静态文 ...
- MSIL实用指南-比较运算
数值的比较就是大于.小于.等于.大于等于.小于等于.不等于,它们的运算结果都是布尔值.大于.小于.等于有直接对应的指令,分别是Cgt.Clt.Ceq.大于等于.小于等于.不等于没有直接对应的指令,它的 ...
- Delphi - 使用Pos、Copy函数定位和截取字符串
使用Pos函数来定位子字符串第一次出现的位置 函数定义: Function Pos(Substr: String, S: String): Integer; 表示取出Substr在S中第一次出现的位置 ...
- Jmeter 之测试片段、Include Controller、模块控制器应用
一.测试片段是什么? 应用在控制器上的一个特殊线程组,与线程组处于同一层级,必须与Include Controller或模块控制器一起使用才被执行. 二.应用场景 1.当jmeter脚本非常复杂的时候 ...
- [转]Linux系统结构
Linux系统一般有4个主要部分:内核.shell.文件系统.应用程序. 内核.shell和文件系统一起形成了基本的操作系统结构,它们使得用户可以运行程序.管理文件并使用系统. 1.linux内核 内 ...