用于私人帮助方法的getter和setter

时间:2013-11-16 07:05:46

标签: encapsulation getter-setter private-members

我有一个关于使用getter和setter的理论问题。

在类中说我有私有变量和私有帮助器方法。如果私有方法访问类中的私有变量,它是否真的需要通过getter / setter方法来实现?

我的想法是,对于这个特殊情况(因为私有方法不能从类外部访问),不使用getter和setter而只是直接“到达”不会违反封装。这是真的吗?

由于

2 个答案:

答案 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 ++有关。