在java中,我们真的必须这样做才能使我们的变量或方法公开吗?例如:
void aaa() {
...
}
或者
public void aaa() {
...
}
如果是必须的,为什么?
在java中,我们真的必须这样做才能使我们的变量或方法公开吗?例如:
void aaa() {
...
}
或者
public void aaa() {
...
}
如果是必须的,为什么?
好吧,这不是一个变量,而是一种方法——但是,是的,您必须这样做才能使方法公开。如果您不这样做,则它具有默认的包访问权限,并且无法从其他包访问。您应该自己判断您编写的任何特定方法是否应该只能在同一个类(make it private
)、子类(make it protected
)、包(保留默认值;不幸的是,您不能明确声明包访问)或对一切(让它public
)。
(这是访问修饰符的轻微简化,但这是一个开始。)
至于为什么会这样——通常你应该限制可见性,以便你的类型只公开对其试图封装的概念真正有意义的方法。您可能有更多特定于实现的私有方法,外部世界不应该知道或关心这些方法。
您可以在除 main 方法附近的任何地方省略访问级别修饰符。在那里它必须设置为公开。
不添加修饰符实际上与,或不同。public
private
protected
没有修饰符,只有类本身和同一个包中的任何类可以访问该属性。
这两种方法是不同的:第一种具有包可见性,而第二种是公开的。
不同之处在于包可见的方法只对同一包内的方法公开,而公共方法对包内外的所有方法可见。
因此,您的问题的答案取决于您的意图:如果您的方法确实是组件接口的一部分,请将其设为私有;如果它设计为仅在包内使用,请将其保持为默认包可见性。
在您的第一个示例中,该方法将是包范围的——即只有同一个包中的东西可以使用它。所以是的,您确实需要这样声明公共字段/方法/类,否则它们将具有包范围。
默认为包私有。
如果您想要公开或其他任何内容,则必须指定它。
方法可以被类本身、同一个包内的其他类访问,但不能在包外访问,子类也不能。
见底部图表: http:
//docs.oracle.com/javase/tutorial/java/javaOO/accesscontrol.html
我认为它假设在 Java 中是公共的,所以它并不是真正需要的。如果你开始有public
, protected
, 并private
在单个类中加入混合,则更容易看到该方法可能具有的范围。