August 2021
Intermediate to advanced
450 pages
4h 46m
Chinese
在本书的绝大部分例子中,属性都被定义为私有的,所以其他对象无法直接访问属性。创建一个不会与其他对象交互的孤立对象是荒谬的,因为我们需要在对象间分享适当的信息。有时候是否有必要检查或修改另一个类中的属性?答案当然是需要。大多数时候一个对象需要访问其他对象的属性,不过不需要直接访问。
类应该很注意保护自身的属性。例如,我们不会让对象A在不受对象B控制的情况下检查或修改对象B中的属性。这样做有好几个理由。最重要的原因是要保证数据完整性以及高效调试。
假设Cab类存在一个缺陷。你已经追踪到问题出在Name属性上。不知什么原因它被覆盖了,查询名称会返回垃圾信息。如果Name是public的,任何类都可以修改它,你需要搜索所有可能的代码,尝试找到引用或修改了Name的地方。然而,如果你只允许Cabbie对象修改Name,你只需要查看Cabbie类。一种名为访问器的方法可以提供访问。有时访问器又被称为取值方法(getter)和赋值方法(setter),有时又被简单称为get()和set()。在本书中我们约定方法名加上set和get前缀,如下所示:
在该代码片段中,Supervisor对象会要求Cabbie对象返回其名称(如图4.4所示)。关键在于Supervisor对象自身无法直接获取该信息,它必须询问Cabbie对象来获得信息。这种理念可应用在很多地方。比如,你可能有一个setAge()方法可检查输入的年龄是0或者小于0。如果年龄小于0,setAge()方法可以拒绝设置这个不正确的值。通常,赋值方法可以在某种程度上确保数据的完整性。 ...
Read now
Unlock full access