可能是重复问题:
为什么使用getter和setter方法?
请问有谁能告诉我使用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()方法呢?
get()/set()
方法允许您在返回数据之前对其进行处理。例如:int get(){return i+1;}
- Shmiddtypublic: int i;
,它是否是线程安全的?相反,您可以使用同步技术定义getter和setter来避免数据不一致。我说得对吗?附注:我是c++新手。以java为思考对象。 - Prasanth