Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/grails/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Oop 何时将方法声明为私有_Oop_Design Patterns_Coding Style - Fatal编程技术网

Oop 何时将方法声明为私有

Oop 何时将方法声明为私有,oop,design-patterns,coding-style,Oop,Design Patterns,Coding Style,我正在寻找具体而准确的规则来确定如何声明方法的可见性。这不是语言不可知论,它适用于标准OOP语言。一个好的规则是: 成员的可访问性不应超过其需要 从private开始,并根据需要使其更易于访问。基本上: Public用于当方法必须由外部类访问时。类似于getState()的东西适合这里 Private用于任何其他类都不应访问该方法的情况,例如changeState(…)。一般来说,这与对象内容的实际更改有关-可能您会有一个publicsetX(intx),它只调用privatesetXInte

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

一个好的规则是:

成员的可访问性不应超过其需要

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

基本上:

  • Public用于当方法必须由外部类访问时。类似于
    getState()
    的东西适合这里
  • Private用于任何其他类都不应访问该方法的情况,例如
    changeState(…)
    。一般来说,这与对象内容的实际更改有关-可能您会有一个public
    setX(intx)
    ,它只调用private
    setXInternal(intx)
    ,这样您就可以进行额外的类型检查/安全性/等等。为了安全起见,您还可以将所有内容设置为私有,直到必须进行其他操作为止
  • 受保护的基本上是“公共儿童课程,否则为私人课程”。我可以走任何一条路

任何类型的操作,如果不直接定义特定对象的行为,但在对象行为的实现过程中有用,则可作为私有成员函数的候选操作。

对于任何类/对象,都有:
1.它所做的事情(行为)
2.如何实现它们(实施)


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

我认为公共、受保护和私有关键字的帮助只是为了使代码更加清晰

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


常用的实用方法是永远不要使用private,而只使用public或protected。

public用于公共API的一部分。
为您希望子类能够调用的非公共函数提供保护。
Private,如果您不想让子类和所述方法混在一起(甚至不想知道它的存在)


在C++、C++和C语言中,如果你想让一个子类能够重写它,不要忘记标记一个方法。

你更是说它是语言不可知的,但不是语言特定的。+ 1,但是你从哪里引用这个?我很想看看上下文和文章的其余部分。我只是编造出来的,但我确信之前已经说过了。是的,但是成员可能已经被错误地定义为OOP(例如:一个巨大的类处理多个关注点)@hunter我应该先考虑如何创建API/设计,而不是如何将私有/公共应用于现有方法。