《Think in Java》第一章:对象导论之抽象

本文介绍OOP的基本概念

抽象

先看下百度百科的定义:

抽象是从众多的事物中抽取出共同的、本质性的特征,而舍弃其非本质的特征的过程

人们所能够解决的问题的复杂性直接取决于抽象的类型质量

类型:我要把他抽象成什么。比如鸟会飞,鸡好像也会飞。所以这个飞可以抽象成一个鸟类的特征。只要符合飞(这只是其中的一个特征,涉及到力度)就是鸟类,鸟类就是抽象的类型。

质量:抽象的力度。如果只从一个飞的角度就定义其是鸟类,那么这个鸟类就不够抽象。他应该还有多个特征,也就是抽取出多个共同的特征体质

之前语言(C)的抽象方式人们不仅要根据现实问题(“真正待解的问题需求”,称为问题空间)考虑还需要根据不同的机器平台(“解决问题的平台”,称为解空间)来编写不同的代码,也就是说人们必须要建立问题空间和解空间的映射才能编写代码。

还有一种语言他们的抽象方式是只需要根据问题空间去编写代码,摆脱了 解空间的建立和映射,使得人们专注于解决问题,而不是去考虑在不同的机器上如何实现同样效果(不同的平台可能对一个功能的实现不同,也有可能根本就没有这个功能)。

OOP通过提供更好的表达问题空间的元素而更进了一步

上面这句话的意思是说问题空间中的元素可以被称之为对象,而这也是OOP的思想:程序可以通过添加新类型(class)的对象使自身适用于某个特定问题

OOP允许根据问题来描述问题,而不是根据运行解决方案的机器平台来描述问题

最后列出“纯粹的面向对象设计方式”的五个特性:

万物皆对象

对问题空间进行建模,抽取问题空间中的元素,这些元素就是对象

程序是对象的集合,它们通过发送消息来告知彼此所要做的

对象之间互相配合,职责明确,这些对象构成了程序

每个对象都有自己的由其他对象构成的存储

通俗点就是:对象包含对象,这其实类似于组合的方式。使得可以构建复杂的程序

每个对象都拥有其类型

比如字符串是String类型的用来表示字符串可以接受有关字符串的行为的调用,类型不同其所负责的功能也就不同

某一特定类型的所有对象都可以接受同样的消息

这个涉及到多态了,即父类可以接受的消息子类也可以接受。也就是可替代性

更简洁的表述方式就是:对象具有状态 行为标识

状态可以理解为其所持有的数据(属性)

行为就是可以接受什么样的消息(方法)

标识是代表这个对象的唯一性,并后续可以找到(涉及到hashcode了后续将)

原文链接:《Think in Java》第一章:对象导论之抽象 - 掘金 (juejin.cn)

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

魏铁锤爱摸鱼

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值