漫谈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 ...
随机推荐
- 【转】linux tar.gz zip 解压缩 压缩命令
http://apps.hi.baidu.com/share/detail/37384818 download ADT link http://dl.google.com/android/ADT-0. ...
- gunicorn 基础配置使用
flask 自带的 web 服务器稳定性较差,只能用于测试.最近做的 web 项目,每次启动,需要敲一堆参数文件,今天学习了官方文档里关于配置的说明,记录一下. 创建一个 gunicorn.conf ...
- Nginx在linux下安装及简单命令
安装环境:Centos7 创建目录及切换至目录 # mkdir /usr/local/nginx # cd /usr/local/nginx/ 下载nginx包,访问http://nginx.org下 ...
- MongoDB实现评论榜
Mongodb很适合做这件事,api的调用仅仅是使用到了入门级别的CRUD,理清楚了思路,编码也会顺风顺水,所以你会发现我在这篇博客中说的比编码还多 评论榜预期的功能 就像是StackOverFlow ...
- 一文道尽JavaScript 20年的发展史
作者介绍:Andrew Montalenti是Parse.ly的CTO, 一个长期的Python爱好者,以及初创公司和其他项目的创始人. 原文链接:https://amontalenti.com/ ...
- Linux shell 内部命令与外部命令有什么区别以及怎么辨别
内部命令实际上是shell程序的一部分,其中包含的是一些比较简单的linux系统命令,这些命令由shell程序识别并在shell程序内部完成运行,通常在linux系统加载运行时shell就被加载并驻留 ...
- spring-cloud-kubernetes与SpringCloud Gateway
本文是<spring-cloud-kubernetes实战系列>的第五篇,主要内容是在kubernetes上部署一个SpringCloud Gateway应用,该应用使用了spring-c ...
- UVA P12101 【Prime Path】
题库 :UVA 题号 :12101 题目 :Prime Path link :https://www.luogu.org/problemnew/show/UVA12101
- 利用poi包装一个简单的Excel读取器.一(适配一个Reader并提供readLine方法)
通常,读文本我们会使用BufferedReader,它装饰或者说管理了InputStreamReader,同时提供readLine()简化了我们对文本行的读取.就像从流水线上获取产品一样,每当取完一件 ...
- MySQL如何选择合适的索引
先来看一个栗子 EXPLAIN select * from employees where name > 'a'; 如果用name索引查找数据需要遍历name字段联合索引树,然后根据遍历出来的主 ...