2011-10-26 34 views
3

我正在寻找特定的确切规则来确定如何声明方法的可见性。这不是语言不可知的,它适用于标准的OOP语言。何时声明方法为私有

+0

你的意思是它*是*语言不可知的,但不是语言特定的。 – mloskot

+0

你能选择一个答案吗? – hunter

回答

4

一个很好的规则遵循是:

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

private开始,并根据需要使它们更易于访问。

+0

+1,但是你从哪里引用?我很想看看上下文和文章的其余部分。 – Yuck

+0

我刚刚做了它,但我确定它之前已经说过 – hunter

+1

是的,但成员可能已经被错误地定义为面向对象(例如:一个巨大的类处理多重关注)。 – Zombies

1

基本上:

  • 公共是当该方法必须是可访问由外部类。像getState()就可以放在这里。
  • 私人是当该方法不应该被任何其他类访问,如changeState(...)。通常这涉及对象内容的实际改变 - 也许你会有一个公开的setX(int x),只是调用私人setXInternal(int x),这样你可以有额外的类型检查/安全/等等。为了安全起见,你可能会把所有事情都变成私有的,直到它必须以其他方式。
  • 受保护的基本上是“公立幼儿班,否则私人”。可以去任何一个方面。
0

任何一种不直接定义特定对象行为但在对象行为实现过程中很有用的操作是私有成员函数的候选。

1

对于任何类/对象有:
1.东西它(的行为)
2.它是如何做他们(实现)

世界关心你的对象的行为。它不应该(经常)关心它如何在引擎盖下实现这种行为。保持实现细节私密,并暴露行为。

0

我认为公共,受保护和私人关键字的帮助只是为了让代码更清晰。

所以你可以使用public来作为一个类的API,private可以说明如何不扩展一个类并在其他情况下保护它。

一个共同的务实方法是从来没有使用私人,只使用公共或受保护。

0

作为公共API的一部分的事物公开。
保护您希望子类能够调用的非公共功能。
私人,如果你不希望子类与所述方法(或甚至知道它的存在)混在一起。

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