我有一个关于使用getter和setter的理论问题。
在类中说我有私有变量和私有帮助器方法。如果私有方法访问类中的私有变量,它是否真的需要通过getter / setter方法来实现?
我的想法是,对于这个特殊情况(因为私有方法不能从类外部访问),不使用getter和setter而只是直接“到达”不会违反封装。这是真的吗?
由于
答案 0 :(得分:1)
使用getter和setter的目的是为想要使用你的类的人提供一个公共接口,这样你就可以自由地操作你的内部实现而不需要改变界面。
如果你在私有帮助器方法中操作私有变量,那么任何时候都不会涉及前面的“接口”。如果访问或更改某个值会导致副作用(因此您不必记住不断更新任何辅助值),您可能想要使用getter或setter,但在一般情况下它会有点过分。
答案 1 :(得分:0)
如果私有方法访问类中的私有变量,则为 它真的有必要通过getter / setter方法来实现吗?
不,如果我理解你的问题。无论是公共还是私有,方法都可以访问类的私有成员。为了澄清,以下内容在C ++中都是合法的:
class MyClass
{
private:
Method1() {member = 0;}
public:
Method2() {member = 1;}
private:
int member;
}
我的想法是针对这一个特例(自私人案件以来) 方法无法从类外部访问,即不使用 吸气剂和二传手而不是直接“伸手去拿”不会 是一种违反封装的行为。这是真的吗?
如果您仍在引用该方法,该方法是该类的成员,那么不,它不会。如果你指的是一个不是该类方法的函数,那么是的,你将不被允许访问那些私有成员,除非该函数被声明为friend
有问题的课程。
当然,这与C ++有关。