面向对象随笔

今天要讲的主题是面向对象,说到对象,很多人在春节期间一定会被相亲,这事再说难眠,尤其是在乡镇农村,更是普遍现象,平时出门在外,只有春节回趟老家,必须在这期间搞事情,不然就要等来年,许多人是等不起的,所以黄金期就在这几天。现实中的对象要搞,java的对象我们也要搞,两个都很重要,话不多说,我们就聊聊面向对象。

 

说到面向对象的语言,java不是第一个,在java之前就有面向对象的语言,比如C++也是面向对象的,java只是面向对象的一员,可是很多人是由java知道的面向对象思想,这和java的普及程度已经优势是密不可分的。我们在学java的时候,书本上描述最多的就是面向对象,如果java书籍没有用大量篇幅来讲述面向对象,那么这本书一定算不上什么好书,面向对象是java里面精髓,虽然很多人用了多年的java,可还没有真正懂得面向对象的妙处,不过这也不影响使用java,就按照别人的代码格式写,套路是一样的,只要程序不出错能用即可。如果大家想要提高自己代码水平,这样做是肯定是不行的,要写好面向对象的代码,就必须对java的面向对象知识有个清晰的认知,比如继承、接口、抽象类、重写、重载、多态和封装等有个很系统的了解,在此基础上,再根据具体的业务逻辑规则搭建自己的代码框架。有人说,代码只要能完成功能没有毛病,不就OK了吗,干么非要花这么大的力气去搞懂这些东西呢,很多人也不清楚这些东西也能写代码呀。关于这个说法,不能说它没有不对,它也有可取之处,就是代码可用就行。但这只能说是前期可行,随着项目的跌倒,代码量的增加,毛病越来越多,缺点就暴露出来了。比如代码不具备可扩展性,或者扩展性比较差,方法代码量大,逻辑混乱,没有清晰的逻辑分类。要解决这些问题,就要对我们的代码重构,将代码变得逻辑清晰,具有一定的可扩展性,这就需要我们使用面向对象的思想为基础,对代码进行合理的优化重构。这是项目迭代过程必经的一道坎,每做一次,都会对面向对象有更深刻的理解。

 

在面向对象的世界里,类是一等公民,有了类才会有对象,对象我们使用new关键字来创建,对象在堆内存中物理空间里,对象都有内存地址,声明变量的值就是对象的内存地址。我们说面向对象,其实就是站在对象的角度来思考程序的组织架构,但我们不能为了面向对象而面向对象,这样是不对的,面向对象的使用是为了提高代码的扩展性,降低代码的维护成本,减少程序的bug,增强创新的稳定性。面向对象的使用,不但是使用new关键字来创建对象这么简单,我们的对象是具有多态性的,比如,有继承关系的类,子类可以以父类的身份出现,也可以以自身出现,这样也会带来方法的重写,经常面试的时候,会问到方法重写方面的问题,当然,接口也存在这样的问题,有了这些的基础,才能是写面向对象代码的前提。新手在学习面向对象的时候,经常会迷途,因为面向对象里的概念以及知识点比较多,很容易混淆也很容易忘记,这些东西其实有工作经验的也会不记得,要时常的去翻看,才会想起,不过随着代码量的增加,自己对这些问题也会有不同的理解,比如很多新手对继承和接口理解不深刻,感觉它们没什么区别,还有人说能用接口就不用抽象类,面向接口编程等一些自己也似懂非懂的话语,这些观点太片面了,新手容易把它当做真理去执行,然而,很多时候,我们遇到的实际情况跟别人是不一样的,那么别人的经验就不能拿来用,我们需要找到适合自己的编程方法。

 

我们在学面向对象的时候,一定要有内存模型的概念,因为,对象都是在堆内存中,有了这种模型概念就很容易的理解对象,以及后面的继承和多态问题,再复杂的对象关系,都可以使用内存模型来分析,画上图,就能很直观的认识到程序的走向,对象的产生、使用以及回收,对象也是有生命周期的,如果创建了对象,没有死亡,随着程序的运行,对象越来越多,那么内存就会溢出的危险,所以java虚拟机有一个神奇的功能就是垃圾回收,一些没有用的对象就会被垃圾回收器机制销毁掉,这样保证了内存的使用率,大大提高了程序的运行效率。所以这也是java安全的原因,我们不需要担心内存泄漏的问题,对象的回收由底层的jvm帮我们搞定,但是这样也不能避免程序的bug,由于bug导致的内存泄漏,jvm是无能为力的,所以写代码的时候也要小心。

转载于:https://my.oschina.net/u/153539/blog/1524471

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值