网站首页 > 技术文章 正文
一、什么是面向对象
学习Java就是学习面向对象,在百度百科上可以看到是这么解释:
面向对象(Object Oriented)是软件开发方法,一种编程范式。面向对象的概念和应用已超越了程序设计和软件开发,扩展到如数据库系统、交互式界面、应用结构、应用平台、分布式系统、网络管理结构、CAD技术、人工智能等领域。面向对象是一种对现实世界理解和抽象的方法,是计算机编程技术发展到一定阶段后的产物。
很空洞的一种理论概括,理解起来却没那么容易。咱们从面向对象的四大特性来看,封装、抽象、继承、多态。
封装,简而言之,封装就是打包,把一个东西的内部全部隐藏,只留给外界一个表象;抽象,抽象是对一些事务的特性抽取,比如男人、女人、小孩、老人都有共同的特性,两个眼睛、一个鼻子、一个嘴,那么就可以概括一下,人都是拥有两个眼睛、一个鼻子、一个嘴;继承,这就好像父亲的家产,子女可以继承一样,面向对象关系中,如果两个对象存在父子关系,那么子就可以继承父的一些属性、方法等;多态,多态是面向对象中最难理解的特性,举个简单的例子,刚刚我们抽象出了一个人,假如以他为父,通过继承我们创建出诸如男人、女人这样的子对象,因为继承了父,所以男人、女人同样拥有两个眼睛、一个鼻子、一个嘴,这个时候我们声明一个父如下:
人 男人=new 男人();
人 女人=new 女人();
也就是说,类型不变,但可以创建出不同的子类对象,这就是多态。
在实际开发中,要尽量贴合这种思想来进行设计,具体到代码,对象就是类的实例,要隐藏掉实例的内部实现,只公开想要公开的属性或方法,供别的对象使用,比如人这个类,可以创建出男人这个对象,提供了高兴这个方法,别的对象只要调用高兴,男人就会高兴,但具体是如何高兴,内部如何运转,这是别的对象不需要关心的事,各扫门前雪,对象只关心自身的实现,而不关心别的对象的实现。
二、为什么要面向对象
在早期,程序设计大多是面向过程,比如C,实现一个需求,可以在一个函数里完成。但随着时代发展,系统体量不断变大,在系统开发维护时,面向过程开发会产生很多不必要的重复工作,以及后期维护,往往需要阅读整体算法才能动手修改,稍微不慎就可能引入BUG,所以,为了解决系统的可维护性,可扩展性,可重用性,面向对象逐渐被关注和推广。
三、如果培养面向对象思想
计算机语言具有高级语言和低级语言之分,而支持面向对象的语言,大多是高级编程语言。他更贴合人们的实际生活,不像低级语言那样枯燥隐晦。所以,遇到问题,尽量以人的角度来思考,然后抽象、概括来寻求解决方案。久而久之,就可以培养出面向对象思想。举个例子来说,单体WEB服务遇到大流量崩溃问题,换算到实际生活中,就好比双十一,大家都在下单购买商品,单体WEB相当于商品的工厂,平常只有一条生产线,双十一来了,购买的人多了,生产不过来怎么办?那就多几条生产线嘛,同理使用LB负载,多启动几个单体WEB服务就好了啊,但是前提是单体WEB必须是无状态的,不然就很容易会出错。
面向对象,并非一句两句就能说清,只是真正实践,才能领悟他的精髓,如果实在不懂,可以尝试动手码一下。
猜你喜欢
- 2024-10-24 ABAP面向对象之单例模式(Singleton Pattern)
- 2024-10-24 什么是面向对象编程? 什么是面向对象编程?它与面向过程编程有什么区别
- 2024-10-24 系统建设的脊柱:表对象建模 建立表对象的表间关系
- 2024-10-24 Python基础-Python面向对象编程 python面向对象的基本概念
- 2024-10-24 几种常用关系型数据库介绍 关系型数据库大全
- 2024-10-24 如何理解python中面向对象里面的单例模式?
- 2024-10-24 如何通俗易懂理解Python类和面向对象?
- 2024-10-24 盛齐讲软考系规:什么是面向对象的基本概念
- 2024-10-24 学习笔记——面向对象(类与对象) 面向对象的类和对象
- 2024-10-24 面向对象方式编写前端页面(1) web面向对象
你 发表评论:
欢迎- 11-18软考系统分析师知识点十六:系统实现与测试
- 11-18第16篇 软件工程(四)过程管理与测试管理
- 11-18编程|实例(分书问题)了解数据结构、算法(穷举、递归、回溯)
- 11-18算法-减治法
- 11-18笑疯了!巴基斯坦首金!没有技巧全是蛮力!解说:真远啊!笑死!
- 11-18搜索算法之深度优先、广度优先、约束条件、限界函数及相应算法
- 11-18游戏中的优化指的的是什么?
- 11-18算法-分治法
- 最近发表
- 标签列表
-
- oraclesql优化 (66)
- 类的加载机制 (75)
- feignclient (62)
- 一致性hash算法 (71)
- dockfile (66)
- 锁机制 (57)
- javaresponse (60)
- 查看hive版本 (59)
- phpworkerman (57)
- spark算子 (58)
- vue双向绑定的原理 (68)
- springbootget请求 (58)
- docker网络三种模式 (67)
- spring控制反转 (71)
- data:image/jpeg (69)
- base64 (69)
- java分页 (64)
- kibanadocker (60)
- qabstracttablemodel (62)
- java生成pdf文件 (69)
- deletelater (62)
- com.aspose.words (58)
- android.mk (62)
- qopengl (73)
- epoch_millis (61)
本文暂时没有评论,来添加一个吧(●'◡'●)