信息隐藏
在前一篇文章中,谈到了防止数据被直接访问与修改的处理方法。Hmm...让我们多聊聊访问控制与信息隐藏吧。让我们假设你现在编写了一个类库,没有采取任何措施,典型的传统C库。嗯,就是一些struct加上对struct的操作方法。团队的其它的一些程序员(client programmers)依赖着你这个类库而做其它的软件设计。突然有一天,你回过头再看你设计的这个类库,你发现里面的一个设计可以更棒,可以让算法更加高效。Wow...真是太美妙的事情了。然而,你想改变,client programmers却想要保持不变。因为他们不想改变他们的代码,因为你这一改变,可能伤筋动骨,涉及到他们使用的类库成员。Hoho...传统的C库就是这么的“赤裸与暴力”,对于client programmers而言,他们可以看见一切,你也没有任何办法阻止他们。而这种“赤裸与暴力”也不是你这个类库设计者想要看见的,你只想要他们知道如何使用类库即可,不必了解是如何实现的;你也只想要他们使用你提供的方法,而不是去对方法有什么改变,去触碰到他们不该触碰到的东西;更重要的是当你想要改变内部实现设计时,你发现你不能!这是一件多么痛苦的事情,你是这么迫切的想要设立访问控制以及信息隐藏!Ho...让我们看看C++和Java怎么做的吧。
C++提供的访问控制与信息隐藏支持
C++提供了三个关键字(Keywords)来支持访问控制:public,protected,private。关于这三个关键字的意义与使用,正如这三个关键字的本身含义一般。
public: 意味着公共的,everyone都能够访问。Hmm...作为类库设计者,你想要client programmers访问到的方法,我想你应该放到这。
private:与public相反,意味着除了你之外,别人都不可以访问。如果你想要你的数据成员隐藏,不被直接访问到&#x