Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 公开还是不公开_Java_Oop_Public Method - Fatal编程技术网

Java 公开还是不公开

Java 公开还是不公开,java,oop,public-method,Java,Oop,Public Method,在java中,我们真的必须这样做才能使变量或方法公开吗?例如: void aaa() { ... } 或 如果这是必须的,为什么呢?这不是一个变量,这是一个方法——但是的,你必须这样做才能使一个方法公开。如果没有,则它具有默认的包访问权限,并且无法从其他包访问。您应该自己判断您编写的任何特定方法是否应该仅在同一个类中可访问,使其私有,使其受子类保护,使包保留默认值;不幸的是,您不能明确地声明包访问,也不能公开所有内容 这是对访问修饰符的稍微简化,但这只是一个开始 至于为什么会出现这种情况,通常

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

void aaa() {
...
}


如果这是必须的,为什么呢?

这不是一个变量,这是一个方法——但是的,你必须这样做才能使一个方法公开。如果没有,则它具有默认的包访问权限,并且无法从其他包访问。您应该自己判断您编写的任何特定方法是否应该仅在同一个类中可访问,使其私有,使其受子类保护,使包保留默认值;不幸的是,您不能明确地声明包访问,也不能公开所有内容

这是对访问修饰符的稍微简化,但这只是一个开始


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

好吧,这不是一个变量,这是一个方法-但是,是的,您必须这样做才能使方法公开。如果没有,则它具有默认的包访问权限,并且无法从其他包访问。您应该自己判断您编写的任何特定方法是否应该仅在同一个类中可访问,使其私有,使其受子类保护,使包保留默认值;不幸的是,您不能明确地声明包访问,也不能公开所有内容

这是对访问修饰符的稍微简化,但这只是一个开始


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

这两种方法不同:第一种方法具有包可见性,而第二种方法是公共的

区别在于包可见方法仅对同一包内的方法可见,而公共方法对包内外的所有方法可见


因此,问题的答案取决于您的意图:如果您的方法确实是组件接口的一部分,则将其私有化;如果它设计为仅在包内使用,请将其保持为默认包可见性。

这两种方法不同:第一种方法具有包可见性,而第二种方法是公共的

区别在于包可见方法仅对同一包内的方法可见,而公共方法对包内外的所有方法可见


因此,问题的答案取决于您的意图:如果您的方法确实是组件接口的一部分,则将其私有化;如果该方法设计为仅在包内使用,请将其保持在默认包可见性。

在第一个示例中,该方法将在包范围内-即,只有同一包中的内容才能使用它。因此,是的,您确实需要声明公共字段/方法/类,否则它们将具有包作用域。

在第一个示例中,该方法将具有包作用域-即,只有同一个包中的东西才能使用它。因此,是的,您确实需要声明公共字段/方法/类,否则它们将具有包作用域。

默认为包私有

如果要公开或其他任何内容,必须指定它

方法可以由类本身、同一包内的其他类(但不在包外)以及子类访问

见底部图表:

默认为包专用

如果要公开或其他任何内容,必须指定它

方法可以由类本身、同一包内的其他类(但不在包外)以及子类访问

见底部图表:

不放置修改器实际上不同于公共、私有或受保护

在没有修饰符的情况下,只有类本身和同一包中的任何类可以访问该属性


在这里了解更多信息:

不放置修饰符实际上不同于公共、私有或受保护

在没有修饰符的情况下,只有类本身和同一包中的任何类可以访问该属性


在此了解更多信息:

我认为它在Java中假设为public,因此它不是真正需要的。如果您开始在单个类中混合使用public、protected和private,则更容易看到该方法可能具有的作用域。

我认为它在Java中假设为public,因此它不是真正需要的。如果您开始使用public、protected,如果在单个类中混合使用private,则更容易看到该方法的作用域

您可以在除main方法之外的任何地方使用访问级别修改器。在那里,它必须设置为公共

你可以访问我
除主方法附近以外的任何位置的“标高”修改器。这里必须设置为公共。

我不确定你的问题是什么。如果希望方法是公共的,则必须将其声明为公共的。默认情况下,它将具有默认的包访问权限。可能是@RobHruska的副本。我想你没有清楚地理解我的问题。请努力寻找解决方案,而不是调查一些重复问题我们可能已经有足够的“解决方案”-我不确定你的问题是什么。如果希望方法是公共的,则必须将其声明为公共的。默认情况下,它将具有默认的包访问权限。可能是@RobHruska的副本。我想你没有清楚地理解我的问题。请努力寻找解决方案,而不是调查一些重复问题我们可能已经有足够的“解决方案”-@JonSkeet我认为人们有时会否决你的答案,以检查Stackoverflow的否决投票功能是否对你的答案有效@JonSkeet我认为人们有时会否决你的答案,以检查Stackoverflow的否决投票功能是否对你的答案有效!有趣的是,没有修改器允许包访问级别,我发现这几乎完全没有用。由于子类的访问级别,使sence受到保护,这对继承很有用。我不知道类+包访问级别有什么意义。有趣的是,没有修饰符允许包访问级别,我发现这几乎完全没有用。由于子类的访问级别,使sence受到保护,这对继承很有用。我不知道在什么情况下类+包访问级别会有任何意义。
public void aaa() {
...
}