何为面向对象?

面向对象

前言

  • 面试的时候很多面试官都问过:“什么是面向对象?”我每次的回答基本都是:“我认为就是将任何一个实物看成一个类,然后这个实物所具有的特点作为它的属性”。但,无疑,这样回答肯定是减分的,并且我也确实没有深刻的理解什么是面向对象,所以,今天花了点时间仔细看了看《Java编程思想》的第一章。书里说的很清楚,可以跳过第一章,但是最后你还是要回来看这一章。作者是真牛逼。我还真的回头看了这一章。

正文

抽象过程

​ 所有编程语言都是提供抽象机制。可以认为,人们所能解决的问题的复杂性直接取决于抽象的类型和质量。所谓的类型 是指所抽象的是什么?(抽象:抽象是从众多的事物中抽取出共同的、本质性的特征,而舍弃其非本质的特征的过程)。汇编语言是对底层机器的轻微抽象。接着出现的许多所谓命令式语言都是对汇编语言的抽象。这些语言在汇编语言基础上有了很大的改进,但是它们所作的主要抽象仍要求在解决问题时要基于计算机的结构,而不是基于所要解决的问题的结构来考虑。程序员必须要建立起在机器模型和实际待解决问题的模型之间的关联。建立这种映射是费力的,而且这不属于编程语言所固有的功能,这使得程序难以编写,并且维护代价高昂,同时也产生了作为副产物的整个编程方法行业

​ 另一种对机器建模的方式就是只针对待解决问题建模,早期的编程语言,比如LISP和APL,都是选择考虑世界的某些特定视图。PROLOG则是将所有问题都转换成决策连,此外还产生了基于约束条件编程的语言和专门对图形符号操作来实现编程的语言。这些方式对于它们索要及觉得特定类型的问题都是不错的解决方案,但是一旦超出其特定领域,她们就力不从心了

​ 面向对象方式通过像程序员提供表示问题空间中的元素的工具而更近了一步。这种表示非常普通,使得程序员不会受限于任何特定类型的问题,我们将问题空间中的元素及其在解空间中的表示成为对象。这种思想的实质是:程序可以通过添加新类型的对象使自身适用于某个特定问题,因此,当你阅读描述解决方法的代码的同时,也是在阅读问题的表述。相比以前我们使用的语言,这是一种更灵活和更强有力的语言抽象。所以,OOP允许根据问题来描述问题,而不是根据运行解决方案的计算机来描述问题,但是它仍然与计算机有联系:每个对象看起来有点像一台微型计算机,它具有状态,还有操作,用户可以要求对象执行这些操作。如果要对象是世界中的对象作类比,那么说它们都具有特性和行为也可以。

​ 有人总结了第一个成功的面向对象语言,同时也是Java所所基于的语言之一的Smalltalk的五个基本特性,这些特性表现了一种纯粹的面向对象程序设计方式:

  • 万物皆对象
  • 程序是对象的集合
  • 每个对象都有自己的由其他对象锁构成的存储。
  • 每个对象都拥有其类型
  • 某一特定类型的所有对象都可以接收同样的消息(多态)

本文其实是抄的《Java编程思想》,致敬这本书。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值