【java基础】-谈谈对面向对象理解

article/2025/9/18 11:23:04

一 前言

本篇文章的核心知识如下,主要是帮助大家更好的理解面向对象编程;
在这里插入图片描述

二面向对象VS面向过程

2.1 面向过程编程

面向过程编程(Process Oriented Programming )其意指是面向过程编程,what?,过程是什么?

在这里插入图片描述

面向过程编程其实是围绕着代码的执行过程而实现;我们打个比喻我现在想把昨天没洗的衣服给洗了(笑话,这绝对不是我,我用纯洁的人格担保!!!),我要执行的步骤如下:

衣服倒进桶里;
将水倒进桶里;nei
添加洗衣液和各种香料等待30分钟
洗刷刷…

那转为代码就是:

 // 1这是个野生的方法---装衣服containClothes().......// 2这是个野生的方法-----倒水pourWater()..........// 3 这是个野生的方法-------倒洗衣液pourWashingLiquid()............// 4 这是个野生的方法-----洗刷刷washClothes().............

好麻烦啊,我洗个衣服竟然要执行这么步骤,敬佩前辈么洗刷刷能力

在这里插入图片描述

2.2 面向对象编程

面向对象编程(Object Oriented Programming,OOP)其意指面向对象编程,略略略…这不是废话么,没错啊就是这句废话,我们要理解的核心概念是什么是对象?

在这里插入图片描述

对象这个名称其实很普通啊,比如你家里人经常会说,孩子啊,最近有对象了,奶奶等等着报孙子里,…,这是真的么?难道java中面向对象编程就是指生活中相处的对象?那我编写个女孩子对象,是不是就有对象啦,呵呵…,你想的真美好(跟代码生孩子去吧!!!);

面向对象中的对象其实就是面向事物,《Think in java》中有一句话叫啥来着?万物皆对象…额,一切皆对象…额,没错啥都是对象;好吧如果你是初学者去面试,就别吹这就话了,你想跟老程序抢饭碗啊!!!

在这里插入图片描述

面向对象编程我们已经理解了,就是类似根据生活中中的事物编程,嗯?回到刚刚洗衣服的话题上,生活中的事物编程…聪明如我这样的孩子已经想到了,本宝怎么会自己洗衣服呢!!!太low了,我要叫一个对象来给我洗衣服,我就不叫其他人帮我洗了,会遭天妒,还是叫最普通的把,比如洗衣机这个对象;

我把衣服倒进洗衣机;
我把洗衣液倒进洗衣机;
开启启动程序,洗衣机麻烦你洗洗衣服啊哈哈;

可以看见我们简化了一些步骤吖,不用拿桶了,不用自己洗衣服;转换成代码就是这样

// 1 知识追寻者这个对象的方法---倒衣服
zxzxz.pourClothes()........
// 2 知识追寻者这个对象的方法---倒洗衣液zszxz.pourWashingLiquid()............// 3 洗衣机这个对象的方法-----洗衣服WashingMachine.washClothes().............
​

面向对象中的对象在java编程中就是Object,每个对象都有自己的类型也就是Class,你可以这样理解,一个类型有多个对象实例(instance),比如,洗衣机有小天鹅洗衣机对象,海尔洗衣机对象;

三 抽象

面向对象的本质其实就是抽象;啥是抽象啊,好深奥的感觉,膜拜当年的大佬用了这么高大尚的术语;抽象我们通俗的理解就是将具体的功能和行为属性抽象出来看待成一个实体;说了这么多,你可能还是一脸懵逼…

在这里插入图片描述

就以洗衣机为例子,我现在要将洗衣机有容纳东西的功能,有排水的功能,有洗衣服的功能…好了这么多功能和属性我将它们都抽象出来形成一个实体;那么代码就是如下

public class WashingMaching {
​public void contain(Object obj){// do contain }
​public void drainWater(){// do drain water}
​public void washingClothes(Clothes clothes){}
​
}

四 创建对象

说了那么多关于对象的事情,但是永恒的主题你要告诉我对象是怎么创建的吧, 看如下代码,创建对象是通过 new 这个关键字创建;我们创建了一个对象叫做 wm,也就是实例,它属于 WashingMaching 这个类;执行drainWater()这个方法,表示实例wm执行了其成员方法;

// create object
WashingMaching  wm = new WashingMaching();
// invoke method
wm.drainWater();

五 面向对象的三大原则

5.1 封装

封装其实就是将对象的属性行为隐藏,使其不受外界干扰;我是个冷酷的孩子,不要用你那肮脏的想法揣测我!!!我内在神奇的能力你永远不知道;封装目的就是隐藏,防止被其他对象所破坏;就像人与人之间相处,一定要有隐私空间,难道你是暴露狂???

在这里插入图片描述

5.2 继承

继承就是子类继承父类,子类将拥有父类的所有属性;说个玩笑,某某小伙子正在街头流浪,突然有一天一队军队围住了他,一个矮矮的胖子告诉他,皇帝驾崩啦,你是皇帝唯一的儿子,快跟我回宫登基为帝,继承家业吧!!!在java中都是单继承,所有的对象都有个父类就是Object;使用extends关键字表示继承关系;在继承中添加新方法可以扩展对象功能,重写父类方法可以实现子类特有功能;

在这里插入图片描述

5.3 多态

多态表示一个对象可以表示出多种状态,即对象的状态是可以在子类和父类之间相互转换;举个简单的栗子:小水滴,晨露,雨滴,水雾,本质上都是水,我们认为他们都继承了水;小水滴可以转换成水,这就是向上转型(即向父类靠近),现在小水滴就表现出了2种状态,一种是水的状态,一种是小水滴的状态;如果说水要转换成晨露,就是向下转型(向子类靠近),但是下转型是有风险的,晨露是水,难道水就一定只有晨露这个状态么?显然不可能,水还可以转为雨滴,水雾等…,通常向下转型是要做类型判断,使用关键字 instanceof判断;

在这里插入图片描述


http://chatgpt.dhexx.cn/article/3aRBfvW5.shtml

相关文章

对Java面向对象的理解

Java的面向对象的理解 1.思想简述: 面向对象是一种思想。它将数据和操作数据的方法封装在对象中,从而使对象有了一些功能,也就是说面向对象是将功能等通过对象来实现,将功能封装进对象之中,让对象去实现具体的细节&am…

如何理解Python中的面向对象

一、认识面向对象是什么 面向过程的程序设计的核心就是过程,就是流水线式的思维,过程就是解决问题的步骤,面向过程的设计就好像一条设计好的流水线,考虑周全什么就处理什么东西。 优点在于极大地降低了写程序的复杂度&#xff0c…

Java面向对象的理解

1. 面向对象 Java 是面向对象的编程语言,对象就是面向对象程序设计的核心。其基本思想是使用对象、类、继承、封装、多态等基本概念来进行程序设计。从现实世界中客观存在的事物(即对象)出发来构造软件系统,并且在系统构造中尽可…

如何理解Java中的面向对象

好几次面试都问到了这个问题,回答的也都不好,暂且总结一下: 我的理解是:面向对象是向现实世界模型的自然延伸,这是一种”万物皆对象”的编程思想。在现实生活中的任何物体都可以归为一类事物,而每一…

对于面向对象的简单理解

引言 一直都想写一篇关于面向对象的文章,但是由于之前自己也是一知半解所以也就一直没有付出行动。关于面向对象的这类文章网上已经有很多大牛写过了,在这里呢我也就不班门弄斧了。就简单的说一下我的理解,话不多说接下来进入主题。 什么是…

js面向对象理解

ECMAScript 有两种开发模式:1.函数式(过程化),2.面向对象(OOP)。面向对象的语言有一个标志,那就是类的概念,而通过类可以创建任意多个具有相同属性和方法的对象。但是,ECMAScript 没有类的概念,因此它的对象…

Python面向对象理解

一,初始面向对象. 面向过程的程序设计的核心是过程(流水线式思维),过程即解决问题的步骤,面向过程的设计就好比精心设计好一条流水线,考虑周全什么时候处理什么东西。 优点是:极大的降低了写程序的复杂度…

面向对象理解——多态

何为多态 定义: 多态是指不同的子类在继承父类后分别都重写覆盖了父类的方法,即父类同一个方法,在继承的子类中表现出不同的形式。系统在运行时(而非编译时),能够根据其类型确定调用哪个重载的成员函数的能…

面向对象的理解及相关概念(封装,继承,多态)

前言 面向对象程序设计(OOP)是当今主流的程序设计范性,它取代了结构化或过程式编程技术。 一、面向对象是什么? 1、定义: 面向对象就是:把数据及对数据的操作方法放在一起,作为一个相互依存…

面向对象的理解

一、什么是面向对象? 对 Java 语言来说,一切皆是对象。把现实世界中的对象抽象地体现在编程世界中,一个对象代表了某个具体的操作。一个个对象最终组成了完整的程序设计,这些对象可以是独立存在的,也可以是从别的对象继…

面向对象理解

1.早期发展 面向对象(Object Oriented,OO)是软件开发方法。面向对象的概念和应用已超越了程序设计和软件开发,扩展到如数据库系统、交互式界面、应用结构、应用平台、分布式系统、网络管理结构、CAD技术、人工智能等领域。面向对象是一种对现实世界理解和抽象的方法…

error: unknown file type '.pyx' (from 'pycocotools/_mask.pyx')

在 YOLO v3模型中运用 cocoapi 进行评估模型,安装时报错显示: building pycocotools._mask extension error: unknown file type .pyx (from pycocotools/_mask.pyx) make: *** [all] Error 1可能的解决方法:   运行的 Python 版本不对。 …

sklearn/tree/_criterion.pyx

注解: criterions分为几类,其中有classification criterions与regression criterions。classification criterions是针对离散的,regression criterions是针对连续分布的 本文主要讲解一下RegressionCriterion。 RegressionCriterion用于回归树(Regression Tree 回归树)中…

python中导入.pyx文件的问题解决

已经几次遇到这种问题了, 里面的region指的是一个.pyx文件。 ImportError: cannot import name region from toolkit.utils (D:\******\RPN\pysot-master\toolkit\utils\__init__.py) 解决方案: 创建一个setup.py文件,一般如果是搬运的话里面会有&…

将pyx文件编译成pyd文件(很多坑,已解决)

项目场景: Faster R-CNN项目,将pyx文件编译成pyd文件(很多坑,请注意) 项目环境 python 3.6 – conda的虚拟环境 TensorFlow 1.15.0 win 10 问题描述 使用网上的教程进行编译 有一个需要被编译的bbox.pyx文件,创建…

python文件中import pyx文件问题

1、首先,pyx文件需要安装Cython,这里先进入自己的虚拟环境,用conda安装Cython conda install Cython 2、需要用到pyx的地方是mattnet中的mask.py 文件,里面 import _mask.pyx 文件,需要先在mask的目录下建立setup文…

成功解决windows下将.pyx文件编译成.pyd文件

在linux上正常跑通的算法,搬到windows下使用就报错了 原来是其中涉及到.pyx文件的编译 在linux下.pyx会被编译成.so的文件,但是在windows下是无法使用.so文件的 需要重新编译成windows下的.pyd格式的才可以直接将python模块成功导入到算法中 所以需要解…

.pyx文件编译出错

文章目录 .pyx文件的编译导入 参考博客(写的超级好,完美解决了问题) 错误 ImportError: Building module dtw failed: ["distutils.errors.CompileError: command D:\\\\Program Files (x86)\\\\Microsoft Visual Studio\\\\2019\\\\Pr…

python导入pyx文件失败

报错如下: 出现无法导入的情况时,在import之前加上一下两条语句即可解决问题: import pyximport pyximport.install()

pyx 编译成 pyd

1、编写好py文件,然后将后缀改为pyx 2、编写好setup.py文件 3、在setup.py 文件同目录下打开命令行执行: python setup.py build_ext --inplace之后就会生成pyd文件 和C文件 示例: 需要编译成pyd的文件 fast_fib.pyx import functoolsdef …