【发布时间】:2016-04-15 04:27:26
【问题描述】:
在 intelliJ 中工作时,建议我将方法本地化 - 通过删除访问修饰符。我意识到我真的不知道该使用哪个修饰符以及何时使用并且想要澄清一下。
我读了这篇文章:What is the difference between Public, Private, Protected, and Nothing?
对于 C# 来说,虽然它们很相似,但我想确保它不会太不同。
我还在这里阅读了 Javadoc 帖子:https://docs.oracle.com/javase/tutorial/java/javaOO/accesscontrol.html
还是有点怀疑。
提前致谢!
【问题讨论】:
-
尽可能使用私有。仅当您明确设计继承时才使用受保护的。 Nothing (package) 允许同一个包中的其他类调用该方法,但不允许不同包中的类调用该方法。当然,Public 允许任何人调用它。谨慎使用 public。
-
@neferpitou 这实际上只是link 的图表副本。我很好奇是否有更好的方法来解释它。
-
谢谢,@KevinO 这有助于我澄清它。这是否意味着可以从主类或其他类中轻松修改公共方法?
-
@Infinitylsx,我不确定您所说的修改方法是什么意思。一个方法可以在子类中被覆盖,但是公共、受保护或(在某些情况下)包方法可能会发生这种情况。避免公开的原因是它创建了一个必须维护的合同。旁注,
final方法不能被覆盖。 -
要决定一个方法应该是
public还是private:首先,你需要考虑你的类代表什么。假设您有一个类X,并且代码的其他部分有一个类X的对象。其他代码应该能够用你的X做什么样的事情?这些是您想在X中公开的方法。您在X中编写的任何其他方法都将是“帮助”方法,仅用于帮助其中一种公共方法工作。这是一个过于简单化的解释,不能解释protected或“默认”,但这是您需要开始的地方。
标签: java intellij-idea private public