Java中的方法

时间:2011-01-20 22:21:22

标签: java

方法应该公开还是私有?

要确保封装变量应该是私有的,方法public..is是否正确?

方法中声明的变量是私有的......?

如果我有一个私有的方法(如果我的推理是正确的,那么变量也是私有的),这是封装的一个例子吗?

6 个答案:

答案 0 :(得分:4)

作为一般经验法则,较低的范围更好,

这意味着,私人优于受保护,受保护优于公共等... 或者方法中的局部变量比字段变量更好,字段变量优于静态变量。

所以一般来说,你暴露的越少,其他人可以依赖它就越少,反过来显然你需要暴露一些细节或者然后阶级变得无用,所以找到平衡就是好的软件设计。

答案 1 :(得分:1)

如果需要从包含它的类的外部调用方法,则该方法应该是公共的,私有或以其他方式受保护。方法中声明的变量仅在该方法的范围内可见。

您可能想要阅读有关范围的更多信息:https://web.archive.org/web/1/http://articles.techrepublic%2ecom%2ecom/5100-10878_11-5035301.html

答案 2 :(得分:1)

如果您不希望其他人直接编辑变量,通常变量是私有的。如果其他人更改了值无关紧要,您可以公开。

方法也是如此。如果它只是一个内部方法,则将其设为私有(或受保护),否则可以将其公开。尽管如此,这完全是一个意见问题。

答案 3 :(得分:1)

  

方法应该公开还是私有?

这取决于它的使用方式。有些方法应该是私有的,有些是公开的。

  

要确保封装变量应该是私有的,方法public..is是否正确?

通常,变量应该是私有的。当谈到方法时......这取决于......见上文。

  

方法中声明的变量是私有的......?

他们应该是。

  

如果我有一个私有的方法(如果我的推理是正确的,那么变量也是私有的),这是封装的一个例子吗?

可以。

答案 4 :(得分:0)

这取决于谁可以调用该方法。通常,您应该尽可能减少对班级成员的影响。如果您的类仅作为该包中某些其他类的伴侣存在,则将您的类包设为私有,并使方法包为private。如果该方法是同一类中某些其他方法的帮助器,则将其设为私有。如果该方法仅应由子类访问,并且您的类是公共的,则使该方法受到保护。

答案 5 :(得分:0)

  

方法应该公开还是私有?

如果方法仅由它所属的对象使用,则该方法应该是私有的。

但是对象需要相互通信,因此所有用于此目的的方法都应该是公开的。

示例:假设您有一个控制Web服务器(servlet)的对象 - 将其称为Servlet。此对象与另一个名为3DModeler的对象进行通信,该对象生成原子的3D图形。 3DModeler对象可以使用各种私有方法来帮助自己进行原子建模所涉及的强烈计算等。但是,它需要有一个公共方法来在对其进行建模后返回对图形的引用。它还需要有一个公共方法,它接受有关原子的参数,以便它可以首先对其进行建模。 (例如,它需要知道周期性元素,如果它是同位素等)。

原谅我的化学反应,它很糟糕,但你明白了这一点: - )

  

要确保封装变量应该是私有的,方法public..is是否正确?

是。 (有一些例外......就像所有事情一样。在Spring框架中更加强调这个想法,其中私有变量(依赖)通过setter / getters设置。)

  

方法中声明的变量是私有的......?

他们是该方法的本地人。它们位于堆栈框架中,当堆栈框架弹出时,它们就会被遗忘。 (也就是说,当方法完成时,它们不再存在。)

  

如果我有一个私有的方法(如果我的推理是正确的,那么变量也是私有的),这是封装的一个例子吗?

封装是一种适用于数据的想法 - 这就是全文是“数据封装”的原因。只有在数据可公开访问的情况下才有意义。我们的想法是,数据本身不是可访问的,而是数据应该是私有的,访问它的方式应该是通过公共方法。

这样做的好处是,如果数据发生变化,数据的接口保持不变,因此对代码的所有更改都是本地的,不会影响任何其他类。