Java什么叫面向对象

    什么是面向对象呢?这个问题真的是老生常谈,面试的时候经常问。到底什么是面向对象。。。我也不知道啊

    看看百度一下的结果吧:

世界上有loli控,御姐控,女王控,所以有句话就叫万物皆可控
面向对象也是一样,万物皆对象
对象这个词你可以理解为一个总称,比如男人女人都叫人,蜡烛皮鞭高跟鞋都是道具,所以面向对象原本的意思是“都叫对象”,翻译过来不是原汁原味了而已因此,房子是对象、飞机是对象、猫是对象、树是对象、女朋友也是对象,并且对象具有唯一性:你家的房子是你家的,不是我家的,你在国外看到的美女不是我在国内看到的美女,你的身份证号和我的身份证号不一样
那么一个房子里都有啥呢,有电脑,还有动作片光盘、战争片录像带、人体艺术杂志……现在这些“包含”在房子里的东西就不是东西了,而是叫做“属性”……
对象、属性都有了,剩下就是方法了方法也很好理解啊,意思就是你想要得到某种结果,就需要用特定的方法比如你女朋友生气了要哄吧,不高兴了要逗她开心吧,“哄”和“逗”这些就是让女朋友死心塌地的方法……诸如此类,发现一个美眉要用“追”这个方法,和女朋友逛街上碰到美女要用“窥”这个方法,恋爱都要用“谈”这个方法……
——对象就是一个概念,把所有的事物都称作为“对象”(没有不是对象的东西)——属性就是该事物的组成部分,所有可以被包含的部分都称为“属性”(没有不含属性的对象)——方法就是达成目标的途径,所有可行性的行为都成为方法(没有不存在方法的对象和属性,但是可以选择使用哪些方法)

 

    我想大家很多时候都会看到上面的话吧,上面的是我百度过来的,下面要说的才是我说的:

    在一开始的时候,我也那样的回答,什么万物皆对象啊,什么都是对象什么的。但是真的理解吗,不理解,说白了只是记了下来。工作之后一段时间了,最近对面向对象有所感悟。

   说说感悟过程吧,在我用socket时候,说是绑定数据关系,我去看源码,一层一层翻,一层一层的debug,希望能有所明白,在找的时候说白了,我也不大明白我想找什么东西,最后找到了,最后的最后,竟然只是往socket对象里面填几个数据,socket对象里面的几个成员变量赋值。一下子我的世界就崩溃了,这都什么啊,最后的最后竟然给我看的是这个。我瞬间懵住了,三观被毁,只能思考重建了。

       没错就是这样的。我理解的面向对象的编程到现在就是:对象其实是一个由成员变量组合起来,用于临时存一些数据的一个东西,我们通过调用对象的方法去使用这些数据,这样做的目的一般来说有两个:一是修改了成员变量的值,二是返回一些数据,一般来说,方法都是单功能的,而方法里面的数据来源于三个地方:第一个地方是方法的形参,第二个就是对象的成员变量,第三个就是系统的一些数据,或者是静态的全局变量。通过这样的方法,就能完成一些操作。即使是不知道对象里面的源码,知道这个方法是做什么的就行。      就这么简单,这就是面向对象,其实理解这些话很容易,深刻理解却很难,其实就是两句话:1,对象是有一些数据的东西,,,2,调用对象使用或者修改这些数据,或者返回一个你需要的东西,往往方法都是单功能的便于修改和维护。

     源码中,很多方法都是由说明的,只要看懂说明调用就好了,没必要去死抠一些东西,如果想明白这个方法的用途,单扣这个方法就ok了。我想这也是面向对象的一个好处吧。当对每个类,每个方法都加了注解之后,阅读的人只需要知道简单的流程就可以,如果想单独去研究其中的某个部分,去研究他的类里面的具体方法就好了。

     我以前总以为,一些操作一些东西应该是很难的,调用很多东西怎么怎么样。其实现在有点想明白,其实就是包含数据的对象调用方法去修改对象本身或者其他的对象的数据,或者运用本身数据去运算得到一些数据而已。没有那么多的调用底层的东西,都是表象,本质是数据计算和简单存储数据。当然这样说有点牵强和不严谨。

      即使是java底层真的调用了一些c/c++的东西,那些C啊、C++啊也基本上是数据计算和数据存储,都是这样子的 这就是计算机编程的大的框架,最后的最后归结到高低电平0,1和半导体的应用,,,除了高低电平0,1和半导体之类的硬件的东西,整个编程体系无非就是数据计算和找个地方把数据存起来,以便用于再计算。这只是我一家之言,反驳就不用了,不严谨很牵强,仅供参考。

      但是声明一点,java的编程,很多人只是知道new出来对象,创造对象,却不知道垃圾回收。虽然java提供了很好的垃圾回收机制,但是就空间复杂度而言,还是要控制的,知道每个变量什么时候活的状态不能被回收,什么时候死的状态可以被回收,对于每一个开发都很重要,要在程序到达一个阶段,一个结束去思考一下,哪些变量可以回收了,哪些不能回收了,对不需要但是还在引用的变量进行处理。这样节约了空间。不关注这些敲出来的代码质量很渣,没法看啊。虽然不需要像C那样需要析构函数,但java的垃圾回收还是很重要的。

        That‘s all,thanks!

       

  • 17
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 7
    评论
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值