《Java编程思想》读书笔记——第一章(对象导论)

1.五个基本特征:

(1)万物皆为对象

(2)程序是对象的集合,它们通过发送消息来告知彼此所要做的(可以将消息想象成为对某个特定对象的方法的调用请求)

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

(4)每个对象都拥有其类型(每个对象都是某个类的实例)

(5)某一特定类型的所有对象都可以接收同样的消息

2.对象具有状态,行为和标识。这意味着每一个对象都可以拥有内部数据和方法,并且每一个对象都可以唯一地与其他对象区分开,具体来说,就是每一个对象在内存中都有一个唯一的地址。

3.抽象数据类型的运行方式与内置类型几乎完全一致,二者的差异在于,程序员通过定义类来适应问题,而不再被迫只能使用现有的用来表示机器中的存储单元的数据类型。

4.程序开发人员按照角色分为类创建者(创建数据类型的程序员)和客户端程序员(在其应用中使用数据类型的类消费者)

5.访问控制的第一个存在原因就是让客户端程序员无法触及他们不应该触及的部分,第二个原因是允许库设计者可以改变类内部的工作方式而不用担心会影响到客户端程序员。

6.Java用三个关键词在类的内部设定边界:public private protected

public 表示紧随其后的元素对任何人都是可用的

private 表示除类型创建者和类型的内部方法之外的任何人都不能访问的元素

protected 和private作用相当,差别仅在于继承的类可以访问protected成员,但是不能访问private成员。

Java还有一种默认的访问权限,当没有使用前面提到的任何访问指定次时,它将发挥作用。这种权限通常被称为包访问权限,因为在这种权限下,类可以访问在同一个包中的其他类的成员,但在包之外,这些成员如同指定了private一样。

7.有两种方法可以使基类与导出类产生差异:

(1)直接在导出类中添加新方法,这些方法并不是基类接口的一部分

(2)改变现有基类的方法的行为,这被称为覆盖那个方法

8.“是一个”与“像是一个”的关系

有时必须在导出类型中添加新的接口元素,这样也就是扩展了接口。这个新的类型仍然可以替代基类,但是这种替代并不完美,因为基类无法访问新添加的方法。这样可以描述为“is-like-a”关系。

9.后期绑定

当向对象发送消息时,被调用的代码知道运行时才能确定。编译器确保被调用方法的存在,并对调用参数的返回值执行类型检查(无法提供此类保证的语言被称为是弱类型的),但是并不知道将被执行的确切代码。

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

11.单根继承

在Java中(事实上还包括除C++以外的所有OOP语言)有一个终极基类,名字是Object。

单根继承结构使垃圾回收器的实现变得容易得多

12.把将导出类看做是它的基类的过程称为向上转型,向下转型为更具体的类型称为向下转型。向上转型是安全的,而向下转型几乎是不安全的(并非是彻底危险的)。

你可能感兴趣的:(读书笔记)