什么是OOPS?

面向对象编程是一种编程概念,其工作原理是对象是程序中最重要的部分。它允许用户创建他们想要的对象,然后创建处理这些对象的方法。操作这些对象以获得结果是面向对象编程的目标。

面向对象编程通常称为OOP,用于Java等现代编程语言

核心OOPS概念

1)类

该类是一组类似的实体。它只是一个逻辑组件,而不是物理实体。例如,如果你有一个名为“昂贵的汽车”的类,它可能有梅赛德斯,宝马,丰田等物品。它的属性(数据)可以是这些汽车的价格或速度。虽然可以使用这些车辆进行驾驶,倒车,制动等方法。

2)对象

可以将对象定义为类的实例,并且程序中可以有多个类的实例。对象包含数据和函数,它们对数据进行操作。例如 - 椅子,自行车,标记,笔,桌子,汽车等。

3)继承

继承是一种OOPS概念,其中一个对象获取父对象的属性和行为。它在两个类之间创建了父子关系。它为组织和构建任何软件提供了强大而自然的机制。

4)多态性

多态性是指变量,对象或函数采用多种形式的能力。例如,在英语中,动词_运行_具有不同的含义,如果将您它_用于笔记本电脑_,_脚踏竞赛_状语从句:商务。在这里,我们基于一起与其使用的其他词语来理解_运行_的含义。同样也适用于多态性。

5)抽象

抽象是表示基本特征而不包括背景细节的行为。这是一种创建适合特定应用程序的新数据类型的技术。例如,在驾驶汽车时,您不必担心其内部工作。在这里你只需要关注方向盘,齿轮,加速器等零件。

6)封装

封装是一种包装数据和代码的OOP技术。在这个OOPS概念中,类的变量总是对其他类隐藏。它只能使用当前类的方法访问。例如 - 在学校里,没有班级,学生就不可能存在。

7)关联

关联是两个对象之间的关系。它定义了对象之间的多样性。在OOP概念中,所有对象都有其独立的生命周期,并且没有所有者。例如,许多学生可以与一位教师联系,而一名学生也可以与多位教师联系。

8)聚合

在这种技术中,所有对象都有其独立的生命周期。但是,所有权使得子对象不能属于另一个父对象。例如,考虑班级/对象部门和教师。在这里,单个教师不能属于多个部门,但即使我们删除了部门,教师对象也永远不会被销毁。

9)组合

组合是聚合的一种特殊形式。它也被称为“死亡”关系。子对象没有生命周期,因此当父对象删除时,所有子对象也将自动删除。为此,我们举一个房子和房间的例子。任何房子都可以有几个房间。一个房间不能成为两个不同房屋的一部分。所以,如果你删除房子的房间也将被删除。

OOPS的优点:

  • OOP为程序提供易于理解和清晰的模块化结构。
  • 为面向对象程序创建的对象可以在其他程序中重用。因此它节省了大量的开发成本。
  • 大型程序很难编写,但如果开发和设计团队遵循OOPS概念,那么他们可以更好地设计并具有最小的缺陷。
  • 它还增强了程序模块性,因为每个对象都是独立存在的

借助于示例,将OOPS与其他编程风格进行比较

让我们通过示例来理解OOP与其他编程方法的不同之处。

编程语言可以分为3种主要类型

  1. 非结构化编程语言:顺序具有控制流的所有编程语言中最原始的语言在程序中重复代码
  2. 结构化编程语言:非具有顺序控制流函数的使用网求允许重用代码。
  3. 面向对象的编程:将数据和动作结合在一起。

让我们通过一个例子来理解这三种类型。

假设您要创建具有类似功能的银行软件

  1. 存款
  2. 取款
  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的更多相关文章

  1. Java中的Set, List, Map漫谈

    在编程语言中,集合是指代表一组对象的对象.Java平台专门有一个集合框架(Collections Framework).集合框架是指表示和操作集合的统一架构,隔离了集合的操作和实现细节. 集合框架中的 ...

  2. 理解Java中的抽象

    在计算机科学中,抽象是一种过程,在这个过程中,数据和程序定义的形式与代表的内涵语言相似,同时隐藏了实现细节. 抽象:一个概念或者想法不和任何特定的具体实例绑死. 目录 什么是抽象 抽象的形式 如何在J ...

  3. 一看你就懂,超详细java中的ClassLoader详解

    本篇文章已授权微信公众号 guolin_blog (郭霖)独家发布 ClassLoader翻译过来就是类加载器,普通的Java开发者其实用到的不多,但对于某些框架开发者来说却非常常见.理解ClassL ...

  4. java中的进程与线程及java对象的内存结构【转】

    原文地址:http://rainforc.iteye.com/blog/2039501   1.实现线程的三种方式:   使用内核线程实现     内核线程(Kernel Thread, KLT)就是 ...

  5. 重温java中的String,StringBuffer,StringBuilder类

    不论什么一个系统在开发的过程中, 相信都不会缺少对字符串的处理. 在 java 语言中, 用来处理字符串的的类经常使用的有 3 个: String.StringBuffer.StringBuilder ...

  6. 你所不知道的,Java 中操作符的秘密?

    在 Java 编程的过程中,我们对数据的处理,都是通过操作符来实现的.例如,用于赋值的赋值操作符.用于运算的运算操作符等.用于比较的比较操作符,还包括逻辑操作符.按位操作符.移位操作符.三元操作符等等 ...

  7. 【转】一看你就懂,超详细java中的ClassLoader详解

    http://blog.csdn.net/briblue/article/details/54973413 ClassLoader翻译过来就是类加载器,普通的java开发者其实用到的不多,但对于某些框 ...

  8. 一看你就懂,超详细java中的ClassLoader详解(转)

    转载地址     http://blog.csdn.net/briblue/article/details/54973413   目录(?)[-] Class文件的认识 你还记得java环境变量吗 J ...

  9. Java中Object类hashCode的底层实现

    Java中Object类hashCode的底层实现 openjdk\jdk\src\share\native\java\lang\Object.c 42 static JNINativeMethod ...

随机推荐

  1. 记一次 Windows MySQL 恢复

    0x00 事件 因为本地的服务器硬件出现故障,导致一台 Windows 系统的开发环境挂了,且无法短时间内恢复状态. 应急方案是使用了云上的系统重建了开发环境. 开发人员说需要挂了的那台 Window ...

  2. exported function xxx should have comment or be unexported

    0x00 问题 exported function xxx should have comment or be unexported. 0x01 解决 https://golang.org/s/sty ...

  3. nginx 使用HTTPS协议-SSL证书模块报错解决-附nginx安装 : [emerg] the "ssl" parameter requires ngx_http_ssl_module in nginx.c

    Linux系统下ngnix使用HTTPS协议启动报错: nginx: [emerg] the "ssl" parameter requires ngx_http_ssl_modul ...

  4. Python程序包的构建和发布过程

    关于我 一个有思想的程序猿,终身学习实践者,目前在一个创业团队任team lead,技术栈涉及Android.Python.Java和Go,这个也是我们团队的主要技术栈. Github:https:/ ...

  5. MySQL-InnoDB锁(二)

    上篇文章中对InnoDB存储引擎中的锁进行学习,本文是实践部分,根据索引和查询范围,探究加锁范围的情况. 在本实例中,创建简单表如下: mysql> select * from t; +---- ...

  6. 你不知道的JavaScript之作用域

    什么是作用域 编译原理 分词/词法分析 这个过程会将由字符组成的字符串分解成(对编程语言来说)有意义的代码块,这些代 码块被称为词法单元(token) 解析/语法分析 这个过程是将词法单元流(数组)转 ...

  7. unity_实用小技巧(相机跟随两个主角移动)

    在两人对战的游戏中,有时候我们希望能看清楚两玩家的状态,这时我们需要让相机跟随玩家,可是我们不能让相机只跟随一个玩家移动,这时我们可以取两玩家的中点作为相机的位置.方法如下: public Trans ...

  8. Java集合框架之HashSet浅析

    Java集合框架之HashSet浅析 一.HashSet综述: 1.1HashSet简介 位于java.util包下的HashSet是Java集合框架的重要成员,它在jdk1.8中定义如下: publ ...

  9. 懒人必备:.NetCore快速搭建ELK分布式日志中心

    该篇内容由个人博客点击跳转同步更新!转载请注明出处! 前言 ELK是什么 它是一个分布式日志解决方案,是Logstash.Elastaicsearch.Kibana的缩写,可用于从不同的服务中收集日志 ...

  10. 从0到1体验Jenkins+Docker+Git+Registry实现CI自动化发布

    一.前言 Jenkins是一款开源 CI&CD 软件,用于自动化各种任务,包括构建.测试和部署软件.Jenkins 支持各种运行方式,可通过系统包.Docker 或者通过一个独立的 Java ...