抽象过程
Everything is an object
在Java语言中,将世间万物均视为对象。每个对象都会有自己的属性或行为,其中对象的固有属性在Java语言中表现为变量(variable),而对象的行为则在Java语言中表现为方法(method)。另外,自然界中的万物根据某些特性又可以进一步划分类别,对应在Java语言中的类型(class)标识,而且Java中的对象均基于某一特定的类型标识。
对象的接口与服务
An object has an interface
每个对象都有一个接口,以便提供给外界对该对象进行操作。
An object provides services
对象作为一个服务提供者,一个附加的好处就是:可以提高对象的内聚性(Cohesiveness)。
封装
对类的封装,可以更好地对外界隐藏具体的实现,只开放必要的接口。从而提高对象操作的安全性。
在Java语言中,引入了三种访问指定词(Access Specifiers),以及一个默认访问指定词(default)。
访问指定词 | 说明 | 备注 |
---|---|---|
public | 可以被任何类访问 | |
protected | 可以被同一个包中的所有类访问 可以被所有子类访问 | 子类没有在同一包中,也可以访问 |
private | 只能被当前类所访问 | |
default | 可以被同一包中的所有类访问 | 如果子类没有在同一包中,不可以访问 |
继承
is-a
继承于某个基类的导出类,如果没有对基类作任意的修改,例如添加额外的方法等,那么给基类与导出类是“is-a”的关系。
is-like-a
继承于某个基类的导出类,如果对基类作了某些扩展性的修改,例如添加额外的方法等,那么给基类与导出类是“is-like-a”的关系
多态
在Java语言中,向上转型(upcasting)是可以自动完成的,即将导出类对象赋值给基类类型变量时,导出类会自动转型为基类。因此,经常将子类对象赋值给基类来实现多态。