公众或没有

时间:2012-02-22 17:04:32

标签: java oop public-method

在java中,为了使我们的变量或方法公开,我们真的必须这样做吗?例如:

void aaa() {
...
}

public void aaa() {
...
}

如果是必须的,为什么?

7 个答案:

答案 0 :(得分:12)

那不是变量,这是一种方法 - 但是,你必须这样做才能使方法公开。如果不这样做,则它具有默认的包访问权限,并且无法从其他包访问。您应该自己判断您编写的任何特定方法是否只能在同一个类(使其成为private)子类(使其成为protected),包中(只保留默认值;您可以)访问不幸地明确地说明了包访问或者对所有事物(使它成为public)。

(这是访问修饰符的略微简化,但它是一个开始。)

至于为什么就是这种情况 - 通常你应该限制可见性,这样你的类型只会公开对它试图封装的概念真正有意义的方法。您可能有更多私有方法,这些方法是特定于实现的,外部世界不应该知道或不关心。

答案 1 :(得分:6)

You can ommmit access level keyword

除了在main方法附近,你可以在任何地方ommmit访问级别修饰符。它必须设置为公开。

答案 2 :(得分:5)

不放置修饰符实际上与<{1}},publicprivate不同

如果没有修饰符,只有类本身和同一个包中的任何类都可以访问该属性。

点击此处了解详情: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中是公开的,所以它并不是真正需要的。如果你开始让publicprotectedprivate在一个类中混合使用,更容易看出方法可能具有的范围。