1.
抽象数据类型(ADT):是一种能够对使用者隐藏数据表示的数据类型。
API:应用程序编程接口
对象:是能够承载数据类型的值的实体
对象三大特性:状态、标识、行为
状态:数据类型中的值,标识:内存中的位置,行为:数据类型的操作
面向对象编程:运用数据抽象的思想编写代码(定义和使用数据类型,将数据类型的值封装在对象中)的方式
2.
5数据类型的设计
5.1 封装
面向对象编程的特征之一就是使用数据类型的实现封装数据,以简化代码和隔离用例开发。
封装实现了模块化编程,它允许我们:
独立开发用例和实现的代码;
切换至改进的实现而不会影响用例的代码;
支持尚未编写的程序(对于后续用例,API能够起到指南的作用)
封装同时也隔离了数据类型的操作,这使我们可以:
限制潜在的错误;
在实现中添加一致性检查等调试工具;
确保用例代码更明晰。
模块化编程成功的关键在于保持模块之间的独立性。
5.2 设计API
只为用例提供它们所需要的,仅此而已。
5.5 实现继承
5.6 字符串表示的习惯
publicString toString() {
returngetClass().getName() +"@"+ Integer.toHexString(hashCode());
}
返回一个含有该对象内存地址的字符串。
5.8 等价性
publicbooleanequals(Object obj) {
return(this==obj);
}
== 比较的是引用
equals()比较的是值
Java约定equals()必须是一种等价性关系。它必须具有:
自反性,x.equals(x)为true;
对称性,当且仅当y.equals(x)为true时,x.equals(y)返回true;
传递性,如果x.equals(y)和y.equals(z)均为true,x.equals(z)也将为true。
另外,它必须接受一个Object为参数并满足以下性质:
一致性,当两个对象均未被修改时,反复调用x.equals(y)总是会返回相同的值;
非空性,x.equals(null)总是返回false。
equals()方法重写规则:
java中的数据类型,可分为两类:
1.基本数据类型,也称原始数据类型。byte,short,char,int,long,float,double,boolean
他们之间的比较,应用双等号(==),比较的是他们的值。
2.复合数据类型(类)
当他们用(==)进行比较的时候,比较的是他们在内存中的存放地址,所以,除非是同一个new出来的对象,他们的比较后的结果为true,否则比较后结果为false
对于复合数据类型之间进行equals比较,在没有覆写equals方法的情况下,他们之间的比较还是基于他们在内存中的存放位置的地址值的,因为Object的equals方法也是用双等号(==)进行比较的,所以比较后的结果跟双等号(==)的结果相同。
5.13 契约式设计
使用断言保证代码永远不会被系统错误终止或是进入死循环。