我正在寻找具体而准确的规则来确定如何声明方法的可见性。这不是语言不可知的,它适用于标准的OOP语言。
答案 0 :(得分:4)
遵循的一个好规则是:
会员不应该拥有比他们需要的更多的可访问性。
从private
开始,并在需要时使其更易于访问。
答案 1 :(得分:1)
基本上:
getState()
这样的东西适合这里。changeState(...)
。一般来说,这与对象内容的实际更改有关 - 也许你会有一个公共setX(int x)
只调用私有setXInternal(int x)
,这样你就可以有额外的类型检查/安全/等等。为了安全起见,你可以将所有东西都保密,直到不得不这样做。答案 2 :(得分:1)
任何类/对象都有:
1.它做的事情(行为)
2.它是如何做到的(实施)
世界关心你对象的行为。它(通常)不应该关心它是如何在引擎盖下实现这种行为的。将实现细节保密,并公开行为。
答案 3 :(得分:0)
任何类型的操作都没有直接定义特定对象的行为,但在实现对象行为时很有用,这是私有成员函数的候选者。
答案 4 :(得分:0)
我认为公共,受保护和私有关键字的有用性只是为了使代码更清晰。
因此,您将使用public作为类的API,private以明确如何不扩展类并在其他所有情况下进行保护。
一种常见的务实方法永远不会使用私有方式,只使用公共或受保护。
答案 5 :(得分:0)
公开参与公共API的一部分。
受保护您希望子类能够调用的非公共函数
如果您不希望子类与所述方法混淆(或者甚至知道它的存在),则为私有。
在C,C ++和C#中,如果您希望子类能够覆盖它,请不要忘记将方法标记为虚拟。