private private公司代表作品
时间:2023-05-02 12:39/span>
作者:tiger
分类:
经验
浏览:482
评论:0
封装的重要性毋庸置疑,如果你对客户隐藏成员变量(也就是封装它们),你可以确保class的约束条件总是会获得维护,因为只有成员函数可以影响它们。更进一步地说,你保留了日后变更实现的权利,如果你不隐藏它们,你很快会发现即使拥有class原始码,改变任何public事物的能力还是极端受到约束,因为那会破坏太多客户码。public意味不封装,而几乎可以说,不封装意味不可改变,特别是对被广泛使用的classes而言。被广泛使用的classes是最需要封装的一个族群,因为他们最能够从“改变采用一个较佳实现版本”中获益。protected成员变量的论点十分类似。实际上它和public成员变量的论点相同。
假设我们有一个public成员变量,而我们最终取消了它。多少代码可能会被破坏呢,是的所有使用它的客户码都会被破坏,而那时不可知的大量。因此public成员变量完全没有封装性,。假设我们有一个protected成员变量而我们最终取消了它,有多少代码被破坏,是的,所有使用它的derived classes都会被破坏,那往往也是个 不可知的大量。因此,protected成员变量就像public成员变量一样缺乏封装性,因为在这两种情况下,如果成员变量被改变,都会有不可预知的大量代码收到破坏,虽然这个结论有点违反直观,但经验丰富的程序库作者会告诉你,它是真的,一旦你将一个成员变量声明为public或protected而用户开始使用它,就很难改变那个成员变量所涉及的一切。太多代码需要重写、重新测试、重写编写文档、重新编译、。从封装的角度看,其实只有两种访问权限:private(提供封装)和其他(不提供封装)。