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

看看百度一下的结果吧:

世界上有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!

Java什么叫面向对象相关推荐

  1. [Java入门笔记] 面向对象编程基础(二):方法详解

    2019独角兽企业重金招聘Python工程师标准>>> 什么是方法? 简介 在上一篇的blog中,我们知道了方法是类中的一个组成部分,是类或对象的行为特征的抽象. 无论是从语法和功能 ...

  2. Java基础-初识面向对象编程(Object-Oriented-Programming)

    Java基础-初识面向对象编程(Object-Oriented-Programming) 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. Java是一门面向对象的程序设计语言.那么什 ...

  3. 20175212童皓桢 Java实验二-面向对象程序设计实验报告

    20175212童皓桢 Java实验二-面向对象程序设计实验报告 实验内容 初步掌握单元测试和TDD 理解并掌握面向对象三要素:封装.继承.多态 初步掌握UML建模 熟悉S.O.L.I.D原则 了解设 ...

  4. java基础(一)-面向对象思想

    前言 java是一门面向对象的语言,在学习java前,先要理解面向对象这个概念,区别于c这类的面向过程语言,面向对象有着什么一样的特点呢?先上一张思维导图吧: 对象 什么是对象 问题空间中的元素及其在 ...

  5. 电大java语言与面向对象程序设计基础_6406Java语言与面向对象程序设计基础A卷...

    6406Java语言与面向对象程序设计基础A卷 试卷编号:6406 座位号 浙江广播电视大学2006年春季学期开放教育专科期末考试 <Java语言与面向对象程序设计基础>试题 2006年7 ...

  6. 学java教程之面向对象(四)

    学编程吧学java教程之面向对象(四)发布了,欢迎通过xuebiancheng8.com来访问 本次课来分析java面向对象之构造方法.什么是构造方法呢,构造方法听名字顾名思义,构造的时候执行的方法就 ...

  7. Java基础之面向对象的概念 继承---组合----枚举类

    Java基础之面向对象的概念 继承---组合----枚举类 本章作为面向对象概念的最后一篇,但是作为一名java程序员在面向对象的这条路上还很长. 一.继承与组合简介 继承是实现类重用的重要手段,但是 ...

  8. 【java】java学习笔记之java oop(面向对象)

    如下图所示为笔者总结的java oop(面向对象)学习笔记,其中,附带有代码示例(未展开),方便理解记忆.需要源文件的请到我的资源中下载,下载地址:https://download.csdn.net/ ...

  9. JAVA基础:面向对象的例外处理

    为初学者而著! Java基础是初学者的起点,是帮助你从小白入门到精通必学基础课程! B站最新录制Java300集>>>   适合准备入行开发的零基础员学习Java,基于最新JDK13 ...

  10. java饲养员喂动物_做一个饲养员给动物喂食物的例子体现JAVA中的面向对象思想,接口(抽象类)的用处...

    做一个饲养员给动物喂食物的例子体现JAVA中的面向对象思想,接口(抽象类)的用处 interface Animal{ //动物的接口    public void eat(Food food); // ...

最新文章

  1. plsql 设置鼠标行执行_Excel中执行“宏”的方法有哪些?我列举了这5个,你会几个...
  2. [Python]元组与列表的区别及内建用法
  3. Liunx CentOS6编译安装LAMP
  4. 外媒:iPhone 8售价太高 中国消费者热情程度不高
  5. 如何配置神经网络中的层数和节点数
  6. live555 rtsp直播卡顿马赛克优化
  7. OpenCasCade标注显示类(独立)
  8. html5css3背景下雪,HTML5 CSS3下雪奥运五环背景动画特效
  9. asdm 对应 java 版本,asdm不能登录问题;浏览器必须是ie,不能是chrome或者firefox;java的版本,尤其是安全等级和例外需要调整...
  10. 直升机救援机制的发展
  11. 模电八:集成运算放大器(下)
  12. 【Java】 小数位数 | 小数多少位 | 忽略无效0
  13. 2015年 网络工程师试卷答案及详解
  14. JS中1900-2100区间内的公历、农历互转的工具类
  15. BEA-141281
  16. 【Python入门练手小项目】童年最爱看的动画片之海绵宝宝和派大星❤️
  17. 如何复制出计算机缓存中的歌曲,怎样提取电脑缓存中的文件 例如音乐
  18. 如何让您的网站符合W3C标准
  19. HTML+CSS的简单使用(代码)
  20. arm linux gcc 说明书,第七篇:gcc和arm-linux-gcc常用选项

热门文章

  1. 怎么把F1-F12的功能按键模式修改为传统的单键快捷按键模式。
  2. pic16f1787 C语言程序,单片机定时器中断原理图解
  3. ZYNQ跑系统 系列(一) 传统方式移植linux
  4. Linux--日志分析查看——grep,sed,sort,awk运用
  5. 一文看懂三极管在电路中的应用原理
  6. 【计算机网络】--- 流式套接字通信
  7. TouchGFX介绍
  8. vue中获取获取当前城市地址_Vue使用百度地图获取当前城市
  9. c# 变量不可访问,因为它具有一定的保护级别
  10. LeetCode-860-easy-柠檬水找零(贪心,模拟)