• 请不要在回答技术问题时复制粘贴 AI 生成的内容
xingzhela
V2EX  ›  程序员

到底什么叫做面向对象?自认为搞清楚了,可是经理说我没搞清楚。

  •  
  •   xingzhela · May 11, 2016 · 9557 views
    This topic created in 3835 days ago, the information mentioned may be changed or developed.

    到底什么叫做面向对象?自认为搞清楚了,可是经理说我没搞清楚。 面向对象编程不就是封装,多态,继承吗?

    Supplement 1  ·  May 11, 2016
    好吧,我们经理是做技术的,做 java 七年多了,但是我感觉他水平一般化,有的设计模式都不懂,我能说有的东西他也不懂,还指指点点的吗
    71 replies  •  2016-05-17 10:43:48 +08:00
    laoyuan
    laoyuan
    May 11, 2016
    1
    一堆值和函数的集合。。
    expireddessert
    expireddessert
    May 11, 2016
    2
    请问什么是封装…… 什么是多态…… 什么是继承…… 请具体一点……
    designer
    designer
    May 11, 2016 via iPhone
    3
    就是帮单身猿猿们找对象!
    cxbig
    cxbig
    May 11, 2016❤️1
    4
    倒不如帖一点代码出来看看? OOP 更多的是体现在框架构建理念上。
    另外只说你“没搞清楚”?提到细节了没有?如果只是扣个帽子,那说明这个人一样不靠谱。
    araraloren
    araraloren
    May 11, 2016
    5
    你们经理对你有意思吗?面向`对象`。。。
    tobyxdd
    tobyxdd
    May 11, 2016 via Android
    6
    教科书式的回答。。估计是你得说详细点
    wezzard
    wezzard
    May 11, 2016❤️2
    7
    你們經理在裝逼,一個這種破概念還翻來覆去的,又不是做學術寫論文。
    這是教科書的回答:「面向對象的本質是代碼的復用。」
    這是我的理解:「面向對象的本質是消息的傳遞。」
    每個人都有每個人的理解,沒必要在這種隨着經歷增加而在不斷變化的東西上使太多勁兒。
    ren2881971
    ren2881971
    May 11, 2016
    8
    你们经理唬你呢~
    k9982874
    k9982874
    May 11, 2016 via iPad
    9
    我觉的你把最重要的一条“抽象”漏了
    vietor
    vietor
    May 11, 2016 via Android
    10
    面向对象是理念与工具集,你关注了工具集
    jeffersonpig
    jeffersonpig
    May 11, 2016❤️4
    11
    封装、多态和继承这些只是实现面向对象的技术手段,如果你自己在对象的提取和抽象上没做好,这些技术用上去也写不出好代码。面向对象是一种分析问题、看待事物的思维方式,只着眼于这些技术层面的东西,有点太狭隘了。个人觉得编程不只是写写代码,也是在培养各种看待世界的方式。
    just4test
    just4test
    May 11, 2016 via Android
    12
    我觉得本质是绑定了数据和操作,使其更类似于真实世界的实体,从而易于理解和使用
    wjh3936
    wjh3936
    May 11, 2016
    13
    你的经理可能是说你没搞清楚,他来教你怎么做“对象”?手动滑稽
    xpol
    xpol
    May 11, 2016 via Android
    14
    设计模式解析上有一段叫从传统面向对象到新的面向对象。
    大致是说新的面向对象是抽象和封装变化点。
    superlead
    superlead
    May 11, 2016
    15
    @wezzard 咋知道我这是引用的几楼?
    Ouyangan
    Ouyangan
    May 11, 2016
    16
    看看 think in java 导论
    kideny
    kideny
    May 11, 2016
    17
    只是计算机语言这种拙劣的表现语言,找一个实用.或者->访问对象方法和属性的方式,找一个借口罢了。
    chunqiuyiyu
    chunqiuyiyu
    May 11, 2016
    18
    赞同十一楼。面向对象每个人都有自己的理解,如果你们的经理执着于这点就太无聊了,实际的工作项目中,更值得理解和解决的问题根本比概念的理解要重要的多。估计你们经理想要一种教科书式的回答。。
    linux40
    linux40
    May 11, 2016 via Android
    19
    我也觉得你们经理在装逼,这个东西还是要看代码。。。
    UnisandK
    UnisandK
    May 11, 2016❤️8
    20
    经理一拍桌子:你好好看着我!
    然后红着脸小声说了句:这就是面向对象。
    evilic
    evilic
    May 11, 2016
    21
    尽量用最有效的方法来解决问题。面向对象也好,怎样都好,反正都是为了解决问题的。
    tony1016
    tony1016
    May 11, 2016
    22
    10 年工作经验来看,大多数程序猿依旧停留在对象就是有个类的基础上,现实开发中根本没有多少封装,继承和抽象,还不如直接函数编程呢
    admol
    admol
    May 11, 2016❤️1
    23
    你就是一個对象,具备一些功能,拥有一定的编程能力,你们经理在面向你的时候,把你的技能属性值设置成了没搞清楚面向对象是什么,你们经理还可以调用你的编程能力,喊你去做任何能做的事情,但是呢,过了一段时间,你们经理发现你这对象该优化优化了,需要提升一下技能,于是找你谈话,问你什么是面向对象. 2333333333333
    xylophone21
    xylophone21
    May 11, 2016
    24
    断章取义概率很大
    suuuch
    suuuch
    May 11, 2016
    25
    看情况吧,这算是一个开放性问题吧,有自己的见解就好了。
    kyze8439690
    kyze8439690
    May 11, 2016
    26
    懂技术的经理
    jason19659
    jason19659
    May 11, 2016
    27
    我同样想起了一个问题,你对 spring 的理解怎么样
    firsthym
    firsthym
    May 11, 2016
    28
    这明明是一个 big topic
    yszx
    yszx
    May 11, 2016
    29
    面向对象是一种设计思路···反正我是说不出来
    lwbjing
    lwbjing
    May 11, 2016❤️1
    30
    要面向对象,首先要结对编程,
    妹子或者汉子都行,
    再不济也得要有个程序员鼓励师,
    不然就会一直找不到对象。。
    fin
    fin
    May 11, 2016
    31
    能不能讲一下 J2EE 。
    niepan0oo
    niepan0oo
    May 11, 2016
    32
    个人观点:更多的是设计程序的一个思路吧,用这种方式去解决问题,让程序便于理解、便于维护、便于迭代。封装,多态,继承这些应该是具体的实现吧。
    jydeng
    jydeng
    May 11, 2016
    33
    讲不了,所以还是搬砖去吧
    lifesimple
    lifesimple
    May 11, 2016
    34
    找不到对象,何以面向对象?
    alexRH
    alexRH
    May 11, 2016
    35
    看看设计模式的书,虽然单纯看完你还是不懂设计模式,但是至少,装逼,已经不会输给你经理了。
    j4fun
    j4fun
    May 11, 2016
    36
    给我找个对象我告诉你
    bumz
    bumz
    May 11, 2016 via iPhone
    37
    何为面向对象?可以从实践、思维、目的三个角度回答

    封装、多态、继承是实现面向对象的常见方式
    以物件为导向设计架构是面向对象的基本思维
    达到代码复用的效果,是面向对象的主要目的
    blackfire
    blackfire
    May 11, 2016
    38
    为什么我到现在还搞不清楚?每次说完都觉得不对,别人说出来都好有道理的样子。突然想起来张三丰问张无忌,“无忌,招式记住了多少?”…………我感觉面试这么回答是很好的,如果我们总监这么问我,我这么回答,我会祈祷他不打死我
    y835L9DyC5XD09kq
    y835L9DyC5XD09kq
    May 11, 2016
    39
    是产品狗最后的遮羞布
    sensui7
    sensui7
    May 11, 2016
    40
    思想丄的, 如果只是把函数葑装琎类里面, 那没有多大意义啊. 个朲锂解猪要是, 数据保护, 低耦合, 复用.
    wingyiu
    wingyiu
    May 11, 2016
    41
    以后面试记得带两个象棋
    sensui7
    sensui7
    May 11, 2016
    42
    @wingyiu 象没法对, 过不了河
    alphadog619
    alphadog619
    May 11, 2016
    43
    世间万物皆对象
    Chrisplus
    Chrisplus
    May 11, 2016
    44
    面向对象是一种思维方式
    zhuzhe1983
    zhuzhe1983
    May 11, 2016
    45
    首先你要有个对象,然后面对她编程就可以了。。。
    SuperMild
    SuperMild
    May 11, 2016 via iPad
    46
    感觉面向对象体现得最明显的就是各种 framework 。
    现在能这么方便地 import 一个包就获得一堆很实用的类和方法,就是面向对象的好处。
    把逻辑封装为 class ,使 api 非常清晰,同时也使 namespace 划分得很清楚。
    an168bang521
    an168bang521
    May 11, 2016
    47
    我理解的面向对象是:
    像自然界中一样,把事物分为不同的类,方便进行管理;
    自然界中有人类,动物类等;比如人都属于人类,人都继承人类的特征,都有一个鼻子两只手;
    编程语言中,进行归类,继承,多态等;
    比如 JavaScript 常见的,可以用构造函数创造一个类,实例都继承所创建的类;
    实例的方法继承类;但是实例 A 内的数据和实例 B 内的数据是不同的,虽然都是继承同一个类;
    就好比我们每个人都有一双手,都是继承人类的特征,但是我的手不等于你的手;
    大概就是这样的吧;
    妈的,这玩意,真的认真说起来,就好比是一本正经的吹牛 B 一样;
    qiumaoyuan
    qiumaoyuan
    May 11, 2016
    49
    面向对象是一种管理代码复杂度的有效方法
    qiumaoyuan
    qiumaoyuan
    May 11, 2016
    50
    对了,补充一句,其实你经理未必清楚。
    21grams
    21grams
    May 11, 2016
    51
    本质就是通过封装降低了复杂度。
    ChiChou
    ChiChou
    May 11, 2016
    53
    你有对象了吗?
    Epirus
    Epirus
    May 11, 2016
    54
    发送消息
    redhatping
    redhatping
    May 11, 2016
    55
    想和你谈对象呢... 你就这么呆瓜
    McContax
    McContax
    May 11, 2016 via Android
    56
    面向对象编程,首先你得有对象(好吧这一块区域我也很模糊,生活中的任何事物都是对象,对象有属性。。。。这一段我都可以背下来了但是就是不懂)
    aksoft
    aksoft
    May 11, 2016
    57
    就是面向女朋友
    loryyang
    loryyang
    May 11, 2016
    58
    一种思维方式吧,尽量做好封装,需要的时候用好继承和接口。
    另外设计是演化出来的,上来就一定要严格面向对象其实意义不大。而且没有具体的问题,空谈 OO 没啥意思,实用至上
    crayygy
    crayygy
    May 11, 2016 via iPhone
    59
    面试前端的时候让我讲一下观察者模式和工厂模式……当时就觉得这事儿没那么简单。果不其然现在这个小项目几乎所有的都是我一个人在做……我特么只是个实习生啊!
    feilaoda
    feilaoda
    May 11, 2016 via iPhone
    60
    @crayygy 工作很多年的很多人都不会观察者模式
    garrych
    garrych
    May 11, 2016
    61
    都知道封装,多态,继承,但这并不等于理解了面向对象,封装,多态,继承只是为了解决代码层面的问题,比如代码复用
    对象是为了解决业务层面的问题
    garrych
    garrych
    May 11, 2016
    62
    赞同十一楼。
    建议楼主看看领域驱动设计,会有很大帮助
    beyoung
    beyoung
    May 11, 2016
    63
    @designer
    @araraloren
    @lwbjing
    @Chrisplus
    @UnisandK

    如果对方是妹纸 你可以做个手势,然后淡淡道:
    就像我们现在这样;你不需要知道我到底究竟是怎么做到某件事的,你告诉我,我去做就好;你就是面向了你的对象,也就是我;
    chilaoqi
    chilaoqi
    May 11, 2016
    64
    你是不是很想说: “咱不装逼了行么,求你了” 哈哈哈
    ichou
    ichou
    May 11, 2016
    65
    我觉得面向对象并不是模式,或者语言特性,那些是实现面向对象的工具

    面向对象 是编程中逻辑编排的一种思想,它不强调我要做什么,而是我这个东西有什么,可以做什么,再通过各个对象的串联来完成一个系统

    很多刚接触一段时间的人,对什么是面向对象如数家珍,但是代码中着实看不到面向对象的思想,要么是为 OOP 而 OOP ,要么是大家都是这么写的所以我这么写

    推荐给楼主一种彻底面向对象的语言: ruby ,凡事皆对象
    SlipStupig
    SlipStupig
    May 12, 2016❤️1
    66
    你是对象,你女朋友是对象,你们两个互相搞对象,你们俩就是类;

    你出生在一个富裕家庭,有一堆跑车,是你爹的,你也可以用,这个叫继承;,但是你娘不属于你,所以这个叫私有对象,跑车和房子属于公共对象,但是只能你和你家人一起用,这个叫公有对象

    你判断政府要在一个地方搞开发,然后你先占坑,放了几张桌子,你听说明年就要开发了,你马上又去修了一个鱼塘,后来政府不开了,你很失望你把那个坑给填了,这个叫抽象类

    以上都是我胡说八道,我是一外行啥也不懂
    elepant
    elepant
    May 12, 2016 via iPhone
    67
    面向过程是什么事都自己做,面向对象是什么事都让别人做。
    smallpath
    smallpath
    May 12, 2016
    68
    哈哈, 也许你可以看看湾湾的面向组件这种说法, 然后跟你经理装个比
    elvba
    elvba
    May 12, 2016
    69
    @SlipStupig 挺形象的哈哈
    SlipStupig
    SlipStupig
    May 12, 2016
    70
    @elvba 这种东西每个人理解不一样,我见过国外一些开源项目人家不用 oop ,照样可以写出牛 x 的项目,我个人认为 OOP 目的是让大家水平更平均,要要逞口舌之利,你可以这么玩。
    版本 1 :
    经理:你还是没理解 OOP
    你:我更注重设计模式
    经理:你连 OOP 都理解不了怎么去理解设计模式呢
    你:你写代码都不设计的嘛,那模块如何懈耦,如何拓展,如何降低模块依赖,数据库复杂度,是否做到可持续交付呢?你设计模式都不理解,你怎么写代码!就算你写出来了,我都不知道是什么代码!

    版本 2 :
    经理:你还是没理解 OOP
    你:我不需要理解,我更注重系统和编译原理这些
    经理:你连 OOP 都理解不了怎么去理解这些呢?
    你:你说的虚类 保护对象 隐含调用,在 JVM 里面只不过是内存一个指针而已,在底层虚拟机实现指令中全都是过程没有对象,编译流程中也全部都是过程,你这些都不理解,可能写出来的代码最终就是被编译器优化掉的下场!
    经理:那对你开发速度和质量上也没什么帮助啊
    你:我理解这些所以我能写出更高性能的代码,你连系统原理都不了解,我都不知道是什么代码!
    xingzhela
    xingzhela
    OP
    May 17, 2016
    71
    @jeffersonpig 同意
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   4346 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 142ms · UTC 07:03 · PVG 15:03 · LAX 23:03 · JFK 02:03
    ♥ Do have faith in what you're doing.