论坛
潜水/灌水快乐,沉淀知识,认识更多同行。
ToB圈子
加入IT圈,遇到更多同好之人。
朋友圈
看朋友圈动态,了解ToB世界。
ToB门户
了解全球最新的ToB事件
博客
Blog
排行榜
Ranklist
文库
业界最专业的IT文库,上传资料也可以赚钱
下载
分享
Share
导读
Guide
相册
Album
记录
Doing
搜索
本版
文章
帖子
ToB圈子
用户
免费入驻
产品入驻
解决方案入驻
公司入驻
案例入驻
登录
·
注册
只需一步,快速开始
账号登录
立即注册
找回密码
用户名
Email
自动登录
找回密码
密码
登录
立即注册
首页
找靠谱产品
找解决方案
找靠谱公司
找案例
找对的人
专家智库
悬赏任务
圈子
SAAS
IT评测·应用市场-qidao123.com
»
论坛
›
软件与程序人生
›
程序人生
›
JAVA成神之路-基础篇——面向对象
JAVA成神之路-基础篇——面向对象
瑞星
金牌会员
|
2024-6-11 08:58:39
|
显示全部楼层
|
阅读模式
楼主
主题
988
|
帖子
988
|
积分
2964
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要
登录
才可以下载或查看,没有账号?
立即注册
x
什么是面向对象
我觉得面向对象这个标题我们可以从思维和代码两个角度来说。
从思维的角度来说,对象是我们生存中所能看到的一切,对象具有两个典型的特征:
1.它具有本身的属性
2.它具有本身的举动模式
比如经常被举得例子,汽车可以在马路上跑。这时候汽车对于我们来说他就是一个对象。它拥有座椅,轮子,发动机等等属性,同时这些属性相护配合,使汽车这个团体可以实现载人,移动这些功能也就是举动模式。也许你会觉得疑惑,那座椅是不是一个对象呢?它当然也是。对象本身就是一个抽象的概念,我想可以这么理解,凡间万物都是对象,比如最小的原子,它也是一个对象,它是由电子和原子核组成。也就是电子和原子核这两个属性,因为不同的举动模式,和自身属性创建了不同的原子对象。
从思维角度说完之后回归我们的代码层面
假如想在代码层面了解面向对象,我觉得有必要了解一下面向对象产生的缘故原由。具体的可以参考[#https://www.cnblogs.com/Dr-wei/p/11861849.html]这篇博文,我觉得它写的很完善了。假如你对软件发展的两次危急有了了解。那我想这里就很容表明了。其实归根就是因为代码巨大,无法管理和二次维护,产生了大面积的冗余代码。
说完代码上产生的缘故原由,咱们再回归到代码本身相信许多人刚入行都听说过java是面向对象的语言,c是面向过程的语言。我以为这种说法是有失偏颇的,也很轻易把新人代入一个错误的理解,觉得面向对象是一种对语言的形貌。其实面向对象的重点是上面提到的思维。相比力而言,我们可以说java能更轻易的完成面向对象的实现。因为C语言中的结构体,你敢说不能用它来搞一个对象吗?
面向过程
面向过程这个东西,许多人觉得它太老旧了。我并不觉得,因为在面向对象中,仍旧存在着面向过程的代码,比如你要实现某个对象中的某个方法。这个方法中的代码就是面向过程。面向过程应该是我们解数学题最常用的方式,先从第一个函数通过盘算得到一个值,然后传给第二个函数。在一个函数的处置处罚中最后得到了最终的结果。这就是面向过程。
面向对象
面向对象这个东西上面说了一大堆,总之,他就是我们眼中看到一切东西。我们的天下正是因为对象之间的各种动作(方法)关联才得以运作。
面向函数
上面提到了面向过程和对象,趁便提一下面向函数编程。其实我觉的面向函数编程更加像面向过程编程。只不外整个过程被我们分割成了许多份。而每一份都是可以复用。这样就可以极大的减轻我们的开发量。比如,拿东西这个动作。这个动作不光人类可以完成,呆板人也可以完成。但是在面向对象里,人类和呆板人是两个完全不同的类。但是他们拥有相同的方法。这个方法是可以复用的,这时候函数的良好就显示出来了。我们只需要在人和呆板人的对象中预留出一个函数的位置。在利用前把这个拿东西动作附上去就可以,这样我们就少了许多代码。
小结
其实我觉得面向过程,面向对象,和面向函数这三类编程方式之间并无优略之分。在实际的开发和使用过程中,我们应该根据具体情况选择不同的思维方式。
面向对象的产生其本质就是为了解决复杂的问题。而对于一些简单的问题如果我们要创建很多对象反而将问题给复杂化了。所以在简单问题时,我们直接使用面向过程想法更加方便。
而面向函数,我觉得是在我们面向对象的开发中,时刻保持着一颗偷懒的心,想着那一部分方法在之后还会用到,将这部分代码提炼出来单独保存为函数即可。(感觉类似于可以传递的工具类)
复制代码
面向对象的三大基本特征
封装
所谓封装就是将代码中不为认知的部分给藏起来。我们拿人来举例子。我们的心脏在时刻跳动着,但是对于外界的各个物体来说,它的跳动与否似乎都不会带来影响。但是对于人这个对象来说那就不一样了,只要心脏克制跳动,人就game over了。以是,我们就可以将心脏作为一个private进行保存就可以了。
继承
继承,这个就更好理解了。我们都拥有父亲,和母亲。我们在父母身上继承了他们的一些特征,比如边幅,血型。但是我们又拥有和他们不同的一些技能。这就是继承。(这个比方感觉并不合理,因为我们的父母拥有一些我们未曾拥有的技能,也就是我们没有继承来的,这样就违法了接下来要说的面向对象五大原则里的里氏替换原则了)
多态
多态,我的理解就是多种姿态。比如车这个类,继承它的子类实现了移动的能力,但是对于不同的车它的实现移动方式又不相同(汽车和自行车那肯定实现移动方式不一样)。但是这不要紧,对于一个想要车加快移动的人来说,他和我要车,我给你一个车。至于汽车还是自行车,你得手了才能知道,反正我就告诉你我有车就行了。你看要车的人想要增加移动速率的目标是不是达成了(就是自行车的有点扯)
面向对象的六大原则
面向对象的六大原则,这是铁律。假如想写面向对象的代码,大概在步伐的设计时想利用面向对象的思维,在设计对象时就必须考虑这六大原则。再以后我们学习的设计模式就是出自这六大原则(但是这并不是我们炫技的资源,只有十分必要的环境下,再考虑利用五大原则诞生的设计模式)。因为这六大原则过于深奥,《设计模式之禅》用了五十多页来介绍。以是这里简朴带过一下,具体的在之后补上
单一职责原则(Single Responsibility Principle)
每一个类应该专注于做一件事情
接口隔离原则
超类存在的地方,子类是可以替换的。
里氏替换原则
实现只管依赖抽象,不依赖具体实现。
开闭原则
应当为客户端提供尽大概小的单独的接口,而不是提供大的总的接口。
依赖倒置原则
实现只管依赖抽象,不依赖具体实现。
迪米特法则
又叫最少知识原则,一个软件实体应当尽大概少的与其他实体发生相互作用。
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复
使用道具
举报
0 个回复
倒序浏览
返回列表
快速回复
高级模式
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
登录
or
立即注册
本版积分规则
发表回复
回帖并转播
回帖后跳转到最后一页
发新帖
回复
瑞星
金牌会员
这个人很懒什么都没写!
楼主热帖
复习一下Linux常用命令,孰能生巧~ ...
OpenSSL RSA相关基本接口和编程示例 ...
2022护网面试题总结
一次服务器被入侵的处理过程分享 ...
使用 Power Shell 修改 Hyper-V 虚拟机 ...
适用于顺序磁盘访问的1分钟法则 ...
内网安全-横向移动(1)
Iceberg在袋鼠云的探索及实践 ...
Oracle实现金额小写转大写函数 ...
kubernetes入门
标签云
AI
运维
CIO
存储
服务器
浏览过的版块
物联网
SQL-Server
快速回复
返回顶部
返回列表