小学生都能看懂的java面向对象特性

java面向对象之查找我使用了一个概念,就是在初学java的时候经常被强调的一个东西,OOP(Object Oriented Programming),翻译成中文就是面向对象程序设计,其实他并不是java的独创,不过OOP的思想确实是在java出现之后火起来的,也可以说是java把他发扬光大了,这样说可能夸大了,不过java确实是功不可没的,那么问题来了,OOP到底是个啥?

引用百度百科中的OOP这个词条下面的解释

面向对象程序设计(Object Oriented Programming)作为一种新方法,其本质是以建立模型体现出来的抽象思维过程和面向对象的方法。模型是用来反映现实世界中事物特征的。任何一个模型都不可能反映客观事物的一切具体特征,只能对事物特征和变化规律的一种抽象,且在它所涉及的范围内更普遍、更集中、更深刻地描述客体的特征。通过建立模型而达到的抽象是人们对客体认识的深化。

一般人看了这段解释之后估计是更加懵逼了,隐隐之中能品出些许哲学的意味来,科班出身的从业者应该比较容易理解这段话,什么模型,抽象,客体啥的,好像什么都说了,又好像什么都没说

我向来觉得用概念去解释概念是很蠢的,对于那些没有相关经验的人来说,他接收不到任何有用的信息,来看一个问题,一个人开一辆车以每小时10公里的速度行驶了300分钟,请问这个人开了多远,通过计算得10 * 300 / 60 = 50公里,算出答案对于大部分小学生应该是没什么压力的,因为只有两个条件。

时间和速度两者相乘得距离,看起来非常简单,但是注意这里是有隐含条件的,答题的时候没有考虑,开车的人有几个人,开的是什么车,走的是直道还是弯道,车有没有中途抛锚,车中途有没有加油,开车有没有遇到红灯,开车有没有遇到交通事故.......

到这儿肯定有人说了,这不是杠精吗,要是考虑这些这题就无解了,确实如此,为了得到这个题目的答案就必须忽略很多次要的东西,我们只要关注两个条件——速度和距离,就行了。

通过上面这个例子就有了这个结论,一般在分析问题的时候,都要简化现实中的情景,只关注最重要的因素,这就是建立模型,或者称之为抽象的能力。 

java面向对象之查找里,我创建了Person类,用他来模拟现实中的人,这些人包含三个属性,姓名,性别和年龄,而忽略了他有没有对象,是什么职业,家庭住址,电话号码等等因素,因为我暂时用不上这些,通过他的姓名,性别和年龄,我就可以很容易地找到这个人。

个人信息一般是私密的,所以这三个字段都是private私有域,通过set和get这两个方法可以设置和访问属性,当我们想知道当前的对象是哪个,他的个人信息都是什么的时候,我用了一个toString方法打印这些信息,这体现了java的封装性。

所有的对象都不是凭空产生的,他们必然都有一个归属,这个归属就是由jvm虚拟机提供的根类Object,所有的类都隐式继承自Object,所有的对象都是Object的实例,都可以向上转型为Object,所以你看Person的toString方法有一个Override,说明他是从父类继承的toString方法,filter方法最后的结果是一个Object数组,而不是Person数组,这体现java的继承性和多态性。

到这儿OOP和java三大特性都说完了,才疏学浅有些东西说错的,请各位大佬批评指正,喜欢的请点个赞,谢谢!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

free5156

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值