可能的重复:
为什么要使用 getter 和 setter? https://stackoverflow.com/questions/1568091/why-use-getters-and-setters
谁能告诉我 getter/setter 方法有什么用?
在一次采访中,有人要求我编写一个简单的类......所以,我编写了如下所示的类:
class X
{
int i;
public:
void set(int ii){ i = ii;}
int get(){ return i;}
};
现在,问题是这样的:
Q1.为什么将变量“i”声明为私有变量而不是公共变量?
我的答案:
因为,数据始终是敏感的,通过将其声明为私有,您可以防止其暴露给外界。
为了反驳我的推理,面试官说……“那么,你为什么要提供一个公共的 getter/setter 方法?既然,这些成员函数是公共的,
因此变量“i”仍然暴露于外界,任何人都可以更改“i”的值。”
更远,
面试官建议我把之前的课重写如下:
class X
{
public:
int i;
};
好处是:您可以更快地修改“i”的值...因为这次不需要调用函数。
不过,面试官的推理似乎不错……因为通过创建私有变量“i”和公共 get/set 方法,您无法保护您的数据。那么,为什么我们要编写 get()/set() 方法呢?
目的是如果需要的话,您可以随时使用更复杂的逻辑更改 setter 和 getter 方法(例如有效性检查)。如果您不使用 getter/setter,则必须编写它们,然后在更改字段的任何地方更改代码,这可能会导致很难发现的错误。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)