何时将方法声明为私有

时间:2011-10-26 16:49:03

标签: oop design-patterns coding-style

我正在寻找具体而准确的规则来确定如何声明方法的可见性。这不是语言不可知的,它适用于标准的OOP语言。

6 个答案:

答案 0 :(得分:4)

遵循的一个好规则是:

  

会员不应该拥有比他们需要的更多的可访问性。

private开始,并在需要时使其更易于访问。

答案 1 :(得分:1)

基本上:

  • Public适用于外部类必须访问该方法的时间。像getState()这样的东西适合这里。
  • Private适用于任何其他类都无法访问该方法的情况,例如changeState(...)。一般来说,这与对象内容的实际更改有关 - 也许你会有一个公共setX(int x)只调用私有setXInternal(int x),这样你就可以有额外的类型检查/安全/等等。为了安全起见,你可以将所有东西都保密,直到不得不这样做。
  • 受保护的基本上是“公共到儿童类,否则为私人”。可以去任何一种方式。

答案 2 :(得分:1)

任何类/对象都有:
1.它做的事情(行为)
2.它是如何做到的(实施)

世界关心你对象的行为。它(通常)不应该关心它是如何在引擎盖下实现这种行为的。将实现细节保密,并公开行为。

答案 3 :(得分:0)

任何类型的操作都没有直接定义特定对象的行为,但在实现对象行为时很有用,这是私有成员函数的候选者。

答案 4 :(得分:0)

我认为公共,受保护和私有关键字的有用性只是为了使代码更清晰。

因此,您将使用public作为类的API,private以明确如何不扩展类并在其他所有情况下进行保护。

一种常见的务实方法永远不会使用私有方式,只使用公共或受保护。

答案 5 :(得分:0)

公开参与公共API的一部分。
受保护您希望子类能够调用的非公共函数 如果您不希望子类与所述方法混淆(或者甚至知道它的存在),则为私有。

在C,C ++和C#中,如果您希望子类能够覆盖它,请不要忘记将方法标记为虚拟。