面向对象思想总结

面向对象的理解

总结来源于《On Java 中文版 基础卷》

所有编程语言都是一种抽象。我们能够解决的问题的复杂程度直接取决于抽象的类型和质量。
例如:

  • 汇编语言是对计算机底层的一个极简化的抽象。
  • 许多命令式编程语言(FORTRAN、BASIC和 C 语言等)都是各自对汇编语言的抽象。

它们主要的抽象方式要求根据计算机的结构而不是问题的结构来思考。程序员必须在计算机和实际问题之间建立关联,这种关联需要耗费很大的精力,导致与编程语言无关,最终程序难以编写且不易维护。

后来发展到,直接针对需要解决的问题构建问题模型。早期的一些编程语言(比如 LISP 和 APL等)会采取特定的视角看待问题。要么所有问题都可以用列表呈现,要么所有问题都是算法问题等。这些编程语言能够出色的解决一些特定的问题,但是在它们专属领域以外的问题,它们就显得无能为力了。

面向对象编程则更进一步,它为程序员提供了一些能够呈现问题空间元素的工具。这些呈现具备足够的通用性,使程序员不再局限于特定的问题。

这些问题空间的元素及其解决方案空间中的具体呈现,我们称之为 “对象” 。

通过添加各种新的对象,程序可以将自己改编为一种描述问题的语言。所以阅读的既是解决方案的代码,也是表述问题的文字。这种灵活且强大的语言抽象能力是前所未有的。因此,面向对象编程描述问题的依据是实际的问题,而不是用于执行解决方案的计算机。

不过,对象和计算机之间依然存在联系。从某种意义上来说,对象类似于一台小型计算机(每个对象都具有状态,可以理解为生命周期),并且可以执行一些特定的操作。这点与现实中事物很相似,它们都具有各自的行为特征

C++ 的面向对象参考了 SmallTalk 语言,Java 源自 C++ ,自然也参考了 SmallTalk 的面向对象思想架构。
SmallTalk 语言的 5 个基本特征,代表了纯粹的面向对象编程的方式,如下所示:

  • 万物皆对象。 可以把对象想象为一种神奇的变量,它可以存储数据,同时你可以发出请求,让它执行一些操作。对于问题中任何元素,都可以用对象来呈现(比如人、建筑、服务等)。
  • 段程序实际上就是多个对象通过发送消息来通知彼此要做什么。当你向一个对象发送消息时,实际情况是发送了一个请求,去调用该对象的某个方法。
  • 从内存角度,每一个对象都是由其它更为基础的对象组成的。 通过将几个对象打包一起,就创建了一种新的对象。这种做法展现了对象的简单性,同时隐藏了程序的复杂性。
  • 每一个对象都有类型。 每一个对象都是通过某个生成实例对象。同一类对象拥有一些共同的行为和特征。
  • 同一类型的对象,可以接受相同的消息。 这种更多提现在子类对象继承父类的一些特征和行为,子类也可以接受父类中的某些消息。

总结:对象具有状态、行为和特征。

  • 对象可以拥有内部数据赋予自己状态
  • 拥有自己的方法,用于产生行为
  • 每个对象在内存中都有唯一的地址,所以说每个对象都不同
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值