【面试宝典】谈谈面向对象

面试官:知道面向对象吧。

小白:嗯,知道,面想对象就是封装继承多态呀。

面试官:回答了一部分,还能谈谈除了封装、继承、多态之外的吗,比如说怎么抽象,抽象的思想是什么?

小白:啊,面向对象还有这么多东西呀。

今天的面试宝典给大家谈谈什么是面向对象,这个问题在大公司都会问一下,因为面向对象分析问题是一个程序员的基本素养,它就相当于编写程序的指导思想,你的程序质量高低,代码实现的难易都与面向对象有关。

计 算机的运行是一个世界,人类的生活又是一个世界,程序员用计算机解决人类实际需求的过程就是建立起这两个世界的某种联系或映射的过程,这个过程也就是抽象 的过程,把人类的认知世界抽象为计算机的认知世界,这个过程很难,也有很多方法,不同的程序员就会用不同的方法,就像有一千条路去某个地方,总会有比较合 适的几条路可走。编程思想中有一句话:人们所能有解决的问题的复杂性取决于抽象的类型和质量。所以计算机编程又是一种艺术,一种抽象的艺术。

关于面向对象一般网上都是在说继承、封装、多态等名词,我觉得对于初学者来讲都太抽象,太难以理解,我觉得编程思想中的几段话讲的很好,很利于初学者来理解面向对象的概念。下面就给大家来说说:

  • 万物皆为对象。也就是说世界上所有的事物都能通过抽象变成一个可以用代码实现的对象。比如动物、建筑物、服务。
  • 程序是对象的集合,他们通过发送消息来告知彼此所要做的。程序是把要解决的问题抽象为若干的对象,这些对象之间通过消息来通知彼此做什么和传递数据。比如:动物吃食物,这个程序包含了动物、食物两种对象,通过吃这一动作来告知动物吃食物。
  • 每个对象都有自己由其他对象构成的存储。意思是对象之间可以是包含的关系,一个对象中可以含有另外一个对象,这样就构成了一个新的对象。比如:发动机对象和汽车对象 ,汽车这一对象中包含发动机。
  • 某一特定类型的所有对象都可以接受同样的消息。这是判断某一对象是不是某个类型的标准。比如你定义了动物的一些行为 比如移动,那么所有的动物都要相应移动这一消息,无论你是跑着移动、飞着移动,还是游着移动。

一个外国人(Booch)还对对象提出了更加简洁的描述:对象具有状态,行为和标识。也就是说每个对象都可以拥有内部数据(它们来描述该对象的状态)和方法(它们的行为)。

最后附上一张网上有趣的图,应该能够帮你理解面向对象个各种知识。


原文发布于微信公众号 - 程序员互动联盟(coder_online)

原文发表时间:2016-02-01

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏数据结构与算法

P2712 摄像头

题目描述 食品店里有n个摄像头,这种摄像头很笨拙,只能拍摄到固定位置。现有一群胆大妄为的松鼠想要抢劫食品店,为了不让摄像头拍下他们犯罪的证据,他们抢劫前的第一件...

3836
来自专栏计算机视觉与深度学习基础

主席树POJ2104

求区间第k大数是多少 用我惯用的线段树写法似乎不适合写主席树,看别人的代码好半天才看懂 用root表示每一个前缀树的根,思想大致是由第i-1个树构成的树建第i个...

2599
来自专栏专注研发

poj-1006-Biorhythms

人生来就有三个生理周期,分别为体力、感情和智力周期,它们的周期长度为23天、28天和33天。每一个周期中有一天是高峰。在高峰这天,人会在相应的方面表现出色。例如...

961
来自专栏程序员互动联盟

到底能不能越过C直接学C++?

现在有好多人都比较迷茫,学习C++是不是需要先学习C语言? 其实这个问题不难,就是直接了解两者的联系和区别就可以给出答案。下面我们来看看他俩到底有什么关系。 ?...

3884
来自专栏用户2442861的专栏

求两个等长有序数组的中位数的logN算法 分治法

http://blog.csdn.net/yangliuy/article/details/7194199

6072
来自专栏企鹅号快讯

Python学习心得(一)

~~缘 起~~ 2017年11月,一群编程零基础的小伙伴们成立了Python学习小组,12名学员从此夜以继日地奔赴学习的征程。一个月过去了,从在屏幕上用最简单的...

66410
来自专栏程序员互动联盟

怎样才能学好java?

Java是一种计算机编程语言,拥有跨平台、面向对象、泛型编程的特性,广泛应用于企业级Web应用开发和移动应用开发,是目前用的最广的语言之一,在编程语言排行榜多次...

2995
来自专栏Python小屋

Python实现大自然数分解为最多4个平方数之和(1)

问题描述:任意大自然数,总是能分解为最多4个平方数的和,所谓平方数是指它是一个自然数的平方。例如:72884 = 4^2 + 138^2 + 232^2,337...

2734
来自专栏算法修养

pta习题集5-16 朋友圈

某学校有N个学生,形成M个俱乐部。每个俱乐部里的学生有着一定相似的兴趣爱好,形成一个朋友圈。一个学生可以同时属于若干个不同的俱乐部。根据“我的朋友的朋友也是我...

3227
来自专栏编程

零基础学习人工智能之Python篇1-Python定义

学习Python首先咱要明白Python是什么 定义: Python是一种面向对象的解释型计算机程序设计语言 我们分解下Python的定义,主要是要理解面向对象...

2126

扫码关注云+社区

领取腾讯云代金券