每个对象都有接口
分类是面向对象思想的基础,这也是我们说面向对象是一种思想的理由之一,因为我们在现实生活中也是这么做的(将各种人、事、物分类)。传统的程序设计语言中也有分类的做法,各种数据类型就是结果,只是这里的做法还太简单。面向对象更进了一步,我们可以设计自己的类型(type,侯捷大大翻译成了型别,似乎和我们的习惯不太一样,他是为了区分type和class),分类的结果就是各种类型(type)在程序中表现为类(class),而对象就象用数据类型(如int)定义的变量(如同int x;的写法一样)。
被隐藏的实现细节
面向对象的设计方法不但参照现实世界中的方法将问题域分类,并且将分类的结果映射到程序中,而且学习了现实世界中“看人下菜碟”的做法——使不同的代码有不同的“待遇”——为代码设置了访问权限。实际上,分类只是开始,分类的目的就是要区分对待。
“访问权限”在现实中的例子有很多,比如unix/linux中的用户有权限,论坛中的用户有不同的权限,它的意义在于:一、隐藏实现细节,保护脆弱的代码又能使客户端程序员专注自己的工作;二、使类创建者(class creators)方便的修改类设计。
权限 |
本类中 |
同包中 |
不同包中的子类 |
不同包中的非子类 |
public |
可以 |
可以 |
可以 |
可以 |
protected |
可以 |
可以 |
可以 |
|
friendly |
可以 |
可以 |
|
|
private |
可以 |
|
|
|
访问权限通常意味着对访问者和被访问者两方面的限定。这里,对被访问者的限定通过在其前加入public、protected、private等访问关键字(access specifiers)来实现;对访问者的则是依照其与被访问者之间的“距离”来划分其权限的(表中竖着看):距离被访问者最近的人(在与被访问者同一类中时)可以访问所有资源,再远一点(与被访问者同一包中的某处)可以访问除private以外的资源,依此类推。当然,也可以翻转90度来说:private的资源只能被本类中的访问者访问。
阅读(1406) | 评论(0) | 转发(0) |