漫谈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 ...
随机推荐
- java高并发系列 - 第25天:掌握JUC中的阻塞队列
这是java高并发系列第25篇文章. 环境:jdk1.8. 本文内容 掌握Queue.BlockingQueue接口中常用的方法 介绍6中阻塞队列,及相关场景示例 重点掌握4种常用的阻塞队列 Queu ...
- 阿里巴巴JAVA开发规范学习笔记
一.编程规约 (一)命名规约 1.类名驼峰.领域模型除外VO.BO.DTO.DO统称POJO 4.数组String[] args 8.枚举类 Enum ,其实就是特殊的常量类,构造方法强制私有 ( 二 ...
- 解决多字段联合逻辑校验问题【享学Spring MVC】
每篇一句 不要像祥林嫂一样,天天抱怨着生活,日日思考着辞职.得罪点说一句:"沦落"到要跟这样的人共事工作,难道自己身上就没有原因? 前言 本以为洋洋洒洒的把Java/Spring数 ...
- hive concat_ws源代码
其他相关源码可以到以下链接查看: https://github.com/apache/hive/tree/master/ql/src/java/org/apache/hadoop/hive/ql/ud ...
- 构建docker虚拟化平台
安装epel-release扩展包 yum install epel-release -y 安装docker yum install docker-ce 启动docker systemctl star ...
- 《NVM-Express-1_4-2019.06.10-Ratified》学习笔记(8)
8 Feature(特性) 8.1 固件升级过程 固件升级通过重启激活的过程是: 1. 主机发一个Firmware Image Download命令,下载固件映像版本到controller.可能有多个 ...
- Linux--shell的awk--10
一.awk介绍 全称:由Aho Weinberger Kernaighan三个人的首字母组合而成 1970年第一次出现在Unix机器上,后来在开源领域使用它 awk是一种单独的编程语言解释器 awk报 ...
- VMware网络设置的三种方式
VMWare提供了三种工作模式:host-only(主机模式).NAT(网络地址转换模式).bridged(桥接模式) 1.host-only(主机模式) 在某些特殊的网络调试环境中,如何要求将真实环 ...
- 缓存系列-Redis入门教程
Redis是什么? Redis (REmote DIctionary Server)是一个开源(BSD许可),内存存储的数据结构服务器,可用作数据库,高速缓存和消息队列,是一个高性能的key-valu ...
- 《Tomcat和JVM的性能调优你真的学会了吗?》总结篇
Tomcat性能调优: 找到Tomcat根目录下的conf目录,修改server.xml文件的内容.对于这部分的调优,我所了解到的就是无非设置一下Tomcat服务器的最大并发数和Tomcat初始化时创 ...