通过 getter 和 setter(访问器)函数访问私有变量有什么意义?

2023-11-27

在类中,变量通常被设为私有以进行封装,并且将变量限制在一定范围内可以更好地控制错误并减少错误。这是有道理的,因为可以访问变量的位置越少,该变量出现错误的位置就越少。

然而,我总是看到变量被设为私有,然后使用 getter 和 setter 函数来检索该值(有时甚至是指向该变量的指针!)。例如int a是私有的以防止公共访问,但随后getA() and setA()允许直接访问它们。

那么 getter 函数和 setter 函数是否违背了私有的意义呢?我的意思是带有访问器函数的私有变量与公共变量相同,只是访问它们的代码发生了变化。 (object.variable 与 object.getVariable())

人们是否有理由使用访问器函数将变量设为私有?与公开相比,有什么优势吗?

我谈论的是一般编程,但主要是 C 语言(即 C、C++、C#、Obj-C)。


这里的关键词和标签是“封装”。你隐藏了细节a,同时仍使其可用。我喜欢已经列出的原因,还有更多。这是另一个,你正在调试,你发现a有一个不正确的值。如果a是公开的,你必须检查每个地方a被访问。如果a是私有的,有 setter 方法,你知道唯一的地方a可能会改变是在打电话给setA()- 将是放置断点的好地方;)

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

通过 getter 和 setter(访问器)函数访问私有变量有什么意义? 的相关文章

随机推荐