在java中,我们是否真的必须这样做才能使我们的变量或方法公开?例如:public或nothing
void aaa() {
...
}
或
public void aaa() {
...
}
如果是必须的,为什么呢?
在java中,我们是否真的必须这样做才能使我们的变量或方法公开?例如:public或nothing
void aaa() {
...
}
或
public void aaa() {
...
}
如果是必须的,为什么呢?
那么这不是一个变量,这是一种方法 - 但是,你必须这样做才能公开一个方法。如果你没有,它的默认包访问,并将不能从其他包访问。您应该自己判断您编写的任何特定方法是否只能在同一个类中访问(使其为private
)为子类(使其为protected
)才能访问该包(保留缺省值;不能明确指出包访问)或一切(使其成为public
)。
(这是访问修饰符略有简化,但它是一个开始。)
至于为什么这种情况 - 通常你应该限制的知名度,使您的类型只公开方法这实际上对于它试图封装的概念是有意义的。你可能有更多的私有方法是特定于实现的,而外部世界不应该知道或关心的。
非常具有说服力,谢谢.. – El3ctr0n1c4 2012-02-22 17:09:16
@Downvoter:小心评论? – 2012-02-22 17:11:18
@JonSkeet我认为人们有时候投票你的答案来检查Stackoverflow的投票功能是否适用于你的答案! – 2012-02-22 20:04:57
这两种方法是不同的:第一种具有包可见性,而第二种是公开的。
区别在于,软件包可见方法在同一个软件包内的方法中只出现在公共方法上,而公共方法对于软件包内部和外部的所有方法都是可见的。
所以你的问题的答案取决于你的意图:如果你的方法真的是你的组件的接口的一部分,使其私人;如果它仅用于包装内部,请将其保留在默认包装可见性范围内。
在您的第一个示例中,该方法将是包作用域 - 即只有同一包中的东西才可以使用它。所以是的,你确实需要声明公共的字段/方法/类,否则它们将会有包的范围。
默认为包私有。
如果你想公开或其他任何东西,你必须指定它。
方法可以由类本身,同一包中的其他类访问,但不在包外,而不能由子类访问。
在底部见图表:
http://docs.oracle.com/javase/tutorial/java/javaOO/accesscontrol.html
不把改性剂实际上不同比public
,private
,或者protected
。
没有修饰符,只有类本身和同一包中的任何类都可以访问该属性。
这里了解更多:In Java, difference between default, public, protected, and private
我认为这是假设公众Java,所以它是不是真的required.If你开始有public
,protected
和private
投在一个类的组合,它是更容易看到该方法可能具有的范围。
你可以在任何地方ommmit访问级别修饰符除了靠近主要方法。它必须设置为公开。
我不确定你的问题是什么。如果你想要一个方法是公开的,你必须声明它是公开的。默认情况下,它将具有默认(包)访问权限。 – DNA 2012-02-22 17:06:33
[在Java中,public,default,protected和private有什么区别?](http://stackoverflow.com/questions/215497/in-java-whats-the-difference-between-public-default - 保护和私人) – 2012-02-22 17:08:20
@RobHruska我认为你没有明确表示我的问题。请付出努力的解决方案,而不是调查一些重复 – El3ctr0n1c4 2012-02-22 17:22:36