尽管该项目工作的很好,如果我们决定重新命名m_nvalue会发生什么?我们也破坏了我们的计划!封装了我们改变我们的班级没有打破所有的代码使用它们的能力。
这里是封装的版本的这类使用访问函数来访问m_nvalue:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
|
class
Change { private : int
m_nValue; public : void
SetValue( int
nValue) { m_nValue = nValue; } int
GetValue() { return
m_nValue; } }; int
main() { Change
cChange; cChange.SetValue(5); std::cout
<< cChange.GetValue() << std::endl; } |
现在,当我们决定要重命名m_nvalue,我们只需要改变SetValue和getvalue()反映变化。我们的程序不需要任何改变!
第二,隐藏详细了解类是如何实现的手段,程序员可以使用类而不知道它是如何实现的。第三,有助于防止意外的改变和滥用的封装。
由于成员变量不能直接访问,这有助于防止无意中改变值。此外,它是通常的情况下,当一个值被修改,其他值也需要更新。此外,它是通常的情况下,当一个值被修改,其他值也需要更新。例如,在一个典型的字符串,字符串时,改性,长度也需要更新。如果用户直接访问字符串,他/她会忘记更新时的长度的字符串改。然而,一个接口的功能,允许用户改变字符串的长度时,可以自动更新更改字符串,这意味着用户不必担心它!
最后,封装可以帮助您调试程序时出错。通常当程序不能正常工作,这是因为我们的一个成员变量具有不正确的值。如果每个人都能够直接访问变量,追踪这段代码修改的变量可以是困难的。然而,如果每个人都要调用相同的函数,修改一个变量,你可以简单的断点功能,观察每个人的变化值直到你看到哪里错了。
正如你所看到的,封装为一点点的努力提供了许多好处。特别是,改变类的实现细节,而不影响任何使用该类的程序代码的可维护性的能力是最重要的!