Think in java:第一章(对象导论)笔记

第1章    对象导论

任何语言都有自己的规则和表达方式,除非赞成这个协定中规定的有关语言信息的组织和分类,否则我们根本无法交谈。计算机并非只是简单的机器。计算机是头脑延伸的工具。
1.1    抽象过程
所有编程语言都提供抽象机制。人们所能够解决的问题的复杂性直接取决于 抽象的类型和质量所谓的“类型”是指“所抽象的是什么?”
汇编语言是对底层机器的轻微抽象。
程序员必须奖励起在机器模型(位于“解空间”内,这是你对问题建模的地方,例如计算机)和实际待解问题的模型(位于“问题空间”内,这是问题存在的地方,例如意向业务)之间的关联。

面向对象语言五大特征:

(1)万物皆对象:将对象视为奇特的变量,它可以存储数据,除此之外,你还可以要求他在自身上执行操作。

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

要想请求一个对象,就必须对该对象发送一条消息,更具体的说,可以把消息想象为对某个特定对象的方法的调用。

(3)每个对象都有自己的由其他对象所构成的存储。换句话说,可以通过创建包含现有对象的包的方式来创建新类型的对象。

(4)每个对象都拥有其类型。

(5)某一特定类型的所有对象都可以接受同样的消息。(类似里斯替换原则)

自我总结:程序即把所有对象放在一起处理,对象之间通过消息进行通信,一个类型即有一个对象,对象有自己的状态和操作。

1.2    每个对象都有一个借口
创建抽象数据类型(类)是面向对象程序设计的基本概念之一。抽象对象数据类型的运行方式与内置(build-in)类型几乎完全一致:你可以创建某一类型的变量(按照面向对象的说法,称其为 对象实例),然后操作这些变量(称其为 发送消息或请求;发送消息,对象就知道要做什么)。
因为类描述了具有相同特征(数据元素)和行为(功能)的对象集合,所以一个类实际上就是一个数据类型。

接口确定了对某一特征对象所能发出的请求。

1.3    每个对象都提供服务

当正在试图开发或理解一个程序设计时,最好的方法之一就是将对象想象为“服务提供者”。

着色从事这件事的一种方式就是问一下自己:如果我可以将问题从表象中抽离出来,那么什么样的对象可以马上解决我的问题?即:我要干嘛?怎么干?要用到什么工具?

将对象看着服务的提供者还有一个好处:它有助于提高对象的内聚性。即:一个对象最好只提供一种服务,不要提供多种服务,采用组合的方式进行开发。

1.4    被隐藏的具体实现(类似于迪米特法则)

利用访问控制符的权限将程序开发人员按照校色分为类创建者(哪些创建新数据类型的程序员)和客服端程序员(哪些在其应用中使用数据类型的类消费者)。这样就不会存在这类创建者修改了类,而必须让客客户端程序修改的难题;也不会让客户端程序员随便修改类中的东西。

1.5    复用具体实现

复用代码是面向对象程序设计语言所提供的最了不起的有点之一。

最简单的复用类的方式就是直接使用该类的一个对象,此外也可以将那个类的一个对象预置新的类中。我们称其为“创建一个成员对象”。新的类可以由任意数量、任意类型的其他对象以任意可以实现新的类中想要的功能的方式所组成。因为是在使用现有的类合成新的类,所以这中概念称为“组合”。如果组合是动态发生的,那么通常被称为“聚合”。组合经常被视为“has-a”(拥有)关系,就像“汽车拥有引擎”一样。

1.6    继承(首先考虑组合)
使基类与导出类产生差异的两种方式:

(1)直接在导出类中添加新方法

(2)直接重写基类的方法,即覆盖。

1.6.1 “是一个”与“像是一个”关系

用一个导出类对象来完全替代一个基类对象,这可以被视为“纯粹替代”,通常称之为“替代原则”。这种导出类与基类的关系是is-a(是一个)关系。有时,必须导出类型中添加新的东西,这样也就扩展了接口,但是任然能代替基类,这就是is-like-a(像是一个)关系。

1.7    伴随多态可互换对象

非面向对象:前期绑定

面向对象:后期绑定

java中,动态绑定石默认行为,不需要添加额外的关键字来实现多态。

向上转型:把导出类看做是它的基类的过程。前父后子的写法。

1.8    单根继承

java继承自一个终极基类,名字叫Object。

单根继承结构宝成所有对象都具备某些功能,因此你知道,在你的系统中你可以在每个对象上执行某些基本操作。所有对象都可以很容易的在堆上创建,而参数传递也得到了极大的简化。单个继承结构使得辣鸡回收器实现变得简单很多。

1.9    容器

在任何需要时都可扩充自己以容纳你置于其中的所有东旭,称之为:容器。

1.10    对象的创建和生命期
总结:后续还有一些小标题感觉没必要记录了,这章的东西说的比较深,我都没怎么看明白,可能只是为后续的章节打下一些伏笔。但是感觉上又说了很多。


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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值