在java中,为了使我们的变量或方法公开,我们真的必须这样做吗?例如:
void aaa() {
...
}
或
public void aaa() {
...
}
如果是必须的,为什么?
答案 0 :(得分:12)
那不是变量,这是一种方法 - 但是,你必须这样做才能使方法公开。如果不这样做,则它具有默认的包访问权限,并且无法从其他包访问。您应该自己判断您编写的任何特定方法是否只能在同一个类(使其成为private
)子类(使其成为protected
),包中(只保留默认值;您可以)访问不幸地明确地说明了包访问或者对所有事物(使它成为public
)。
(这是访问修饰符的略微简化,但它是一个开始。)
至于为什么就是这种情况 - 通常你应该限制可见性,这样你的类型只会公开对它试图封装的概念真正有意义的方法。您可能有更多私有方法,这些方法是特定于实现的,外部世界不应该知道或不关心。
答案 1 :(得分:6)
除了在main方法附近,你可以在任何地方ommmit访问级别修饰符。它必须设置为公开。
答案 2 :(得分:5)
不放置修饰符实际上与<{1}},public
或private
不同。
如果没有修饰符,只有类本身和同一个包中的任何类都可以访问该属性。
点击此处了解详情:In Java, difference between default, public, protected, and private
答案 3 :(得分:1)
这两种方法不同:第一种方法具有包可见性,而第二种方法是公开的。
不同之处在于,包可见方法对同一个包内的方法只显示 ,而公包方法对包内外的所有方法都是可见的。
因此,您的问题的答案取决于您的意图:如果您的方法确实是组件界面的一部分,请将其设为私有;如果它仅设计用于包内,请将其保持在默认的包可见性。
答案 4 :(得分:0)
在您的第一个示例中,该方法将是包作用域 - 即只有同一个包中的内容才能使用它。所以,是的,您需要声明公共字段/方法/类,否则它们将具有包范围。
答案 5 :(得分:0)
默认为包私有。
如果您想要公开或其他任何内容,您必须指定它。
方法可以由类本身,同一个包中的其他类访问,但不能在包外部访问,也不能通过子类访问。
见底部图表:
http://docs.oracle.com/javase/tutorial/java/javaOO/accesscontrol.html
答案 6 :(得分:0)
我认为它在Java中是公开的,所以它并不是真正需要的。如果你开始让public
,protected
和private
在一个类中混合使用,更容易看出方法可能具有的范围。