面向对象的思考过程(原书第5版)
上QQ阅读APP看书,第一时间看更新

1.8.1 接口

我们可以看到接口定义了对象之间通信的基本方式。每个类设计接口规格来保证对象能被正确实例化和操作。必须向对象提供的接口发送消息来使用对象暴露的任何行为。接口需要完整描述类与类之间的交互。在大多数面向对象的语言中,访问修饰符指定为public的方法属于接口。

私有数据

为了实现数据隐藏,必须将所有属性声明为private。属性绝不是接口的一部分。只有公共方法是类接口的一部分。将属性描述为public破坏了数据隐藏这一理念。

我们在回过头看一个刚提到的例子,计算一个数字的平方值。在这个例子中,接口由两部分组成:

·如何实例化一个Square对象

·如何传递给该对象一个值,并获取返回的平方值结果

正如在本章前面讨论的一样,如果用户需要访问一个属性,我们会创建一个方法(即取值方法)来返回该属性值。如果用户想要获取该属性值,只需调用取值方法即可。在这种方式中,拥有该属性的对象可以控制访问该属性。这种控制非常重要,特别对安全、测试和维护而言。如果你可以控制对属性的访问,当出现了问题,无须追踪所有可能修改了该属性的代码片段,我们只需要修改一个地方(即赋值方法)。

基于安全的原因,你需要防止不受控的代码对例如密码和个人信息等数据进行修改和获取。例如,当你在使用ATM的时候,获取数据的权限通过PIN做了控制。

签名——类接口与方法接口

不要为用来扩展类的方法接口感到困惑。我会把这些通过方法代表的接口等同于“签名”。