JAVA编程思想读书笔记——什么是对象(一)

第一章 对象导论

写这些笔记的目的,主要是记录自己读这本“圣经”的一些心得和相关的知识点,增强印象,避免以后忘记,我一直认为,读一本书,必须要做笔记,不做笔记不如不读。

1.1抽象过程

所有编程语言都提供抽象机制。汇编语言是对底层机器的轻微抽象。命令式语言(BASIC、C)是对汇编语言的抽象。它们作的主要抽象仍要求在解决问题时要基于计算机的结构,而不是基于所要解决的问题的结构。

程序员必须建立起在机器模型和实际待解问题模型之间的关联。

我的个人理解是,例如C面向过程的语言,它的基本单元是函数,而类似java这种面向对象的语言,他的基本单元是对象,也就是class。

每一个对象都具有状态,还具有操作,用户可以要求对象执行操作,或者说,他们都具有特性和行为。

面向对象语言可以总结为五大特性:

1):万物皆为对象。对象是一种变量,可以存储数据。

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

3):每一个对象都有自己的由其他对象所构成的存储。我对这句话的理解是,一个对象里可以包含有其它对象。

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

5):某一特定类型的所有对象都可以接受同样的消息。我对这句话的理解是多态。也就是说,如果某一个类型的实例拥有某方法,那么属于这个实例之一的另外一个实例,也拥有这个方法。比如:动物会叫。叫是一个方法。而猫是动物这个特定类型的对象,所以猫也会叫。

Booch对对象有更简单的描述:对象具有状态、行为和标识。

1.2 每一个对象都有一个接口

类描述了具有相同特性(数据元素)和行为(功能)的对象集合,所以一个类实际上就是一个数据类型。程序员可以定义类来适应问题,而不再被迫只能使用现有的用来表示机器中存储单元的数据类型。

简单的说,可以根据需求来自己定义类,创造对象。一旦类被创建,就可以随心所欲地创建类的任意个对象,然后去操作它们。

(经典例子)以电灯泡为例,做一个简单的比喻:

Ligit it = new Light();

lt.on();

类型/类的名字是Light,实例是lt。lt是Light对象的一个引用,然后用new方法来创建该类型的新对象。

1.3 每个对象都提供服务

可以把对象看作服务提供者。它通过调用其他对象提供的服务来实现这一目的。程序员的工作就是去创建(或者去寻找已存在的)能够提供理想服务的一系列对象。

这样做,能够提高对象的内聚性。也就是我们一直追求的,高内聚,松耦合。在良好的面向对象设计中,每个对象都可以很好的完成一项任务,但是它并不试图做更多的事。

1.4 被隐藏的具体实现

程序员分为两类,一类是库或类的创建者,一类是库或类的使用者。如果不对类的某些脆弱部分加以控制,这将是很危险的事情。所以就引入了访问控制的概念。

这样做有两个好处:

第一:客户端程序员,也就是调用者无法触及到他们不应该触及的部分。

第二:库设计者修改内部,对调用者没有影响。因为对客户端程序员不可见。

Java用三个关键字在类的内部设定边界:

public:任何人使用。

private:只有类的内部方法才能访问。

protected:继承的类可以访问,但是还是无法访问private成员。

1.5 复用具体实现

代码复用是经验丰富的程序员和初级程序员的区别之一。

新的类可以由任意数量、任意类型的其他对象组成,其他对象都是这个类的成员变量。这种方式就是组合。下面有一张图说明了聚合的概念:

汽车拥有引擎,引擎是汽车的一个成员变量。这就是has-a(拥有)关系。

组合带来了极大的灵活性。成员变量通常都被声明为private。在java里,有一个概念,组合优于继承。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值