漫谈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 ...
随机推荐
- 码农"混子"的思想转变
首先介绍一下自己,在高中的时候学校对于我们这种普通班级采取的都是放养状态,所以高中的学习真是不咋地,可能除了自己擅长的数学以外其他也就考个三四十分,后来磕磕绊绊的在打游戏之余也会学习,第一次参加高考跟 ...
- arukas 樱花免费docker容器获取IP和端口
arukas 樱花免费docker容器,可以安装linux系统,但是每隔一段时间会重启,重启以后IP地址和映射到公网的端口都会变,获取IP和端口,我研究了很久终于找到了C#获取IP和端口的办法,用来搭 ...
- 并发模型与IO模型梳理
并发模型 常见的并发模型一般包括3类,基于线程与锁的内存共享模型,actor模型和CSP模型,其中尤以线程与锁的共享内存模型最为常见.由于go语言的兴起,CSP模型也越来越受关注.基于锁的共享内存模型 ...
- MySQL高可用架构:mysql+keepalived实现
系统环境及架构 #主机名 系统版本 mysql版本 ip地址 mysqlMaster <a href="https://www.linuxprobe.com/" title= ...
- 深入理解Nginx及使用Nginx实现负载均衡
前言: 最近在部署项目时要求实现负载均衡,有趣的是发现网上一搜全部都是以下类似的配置文件 upstream localhost{ server 127.0.0.1:8080 weight=1; ser ...
- Scrapy爬虫框架学习
一.Scrapy框架简介 1. 下载页面 2. 解析 3. 并发 4. 深度 二.安装 linux下安装 pip3 install scrapy windows下安装 a.pip3 install w ...
- 边缘缓存模式(Cache-Aside Pattern)
边缘缓存模式(Cache-Aside Pattern),即按需将数据从数据存储加载到缓存中.此模式最大的作用就是提高性能减少不必要的查询. 1 模式 先从缓存查询数据 如果没有命中缓存则从数据存储查询 ...
- vue 自动化路由实现
1.需求描述 在写vue的项目中,一般情况下我们每添加一个新页面都得添加一个新路由.为此我们在项目中会专门的一个文件夹来管理路由,如下图所示 那么有没有一种方案,能够实现我们在文件夹中新建了一个vue ...
- PHP小补充
code1-1 <!DOCTYPE html> <html> <head> <meta charset="utf-8" /> < ...
- Linux下手动安装JDK
一.删除自带的JDK 查询系统自带JDK rpm -qa | grep java rpm -qa | grep jdk 删除查询出来的文件名 rpm -e --nodeps 文件名 命令执行成功后重新 ...