Java中方法的默认范围是啥?

Posted

技术标签:

【中文标题】Java中方法的默认范围是啥?【英文标题】:What is the default scope of a method in Java?Java中方法的默认范围是什么? 【发布时间】:2010-10-17 10:04:02 【问题描述】:

如果我输入:

 void doThis()
     System.out.println("Hello ***.");
 

doThis() 的默认范围是什么?

公开?受保护?私人的?

【问题讨论】:

【参考方案1】:

默认范围是包私有。同一个包中的所有类都可以访问方法/字段/类。包私有比受保护和公共范围更严格,但比私有范围更宽松。

更多信息:http://docs.oracle.com/javase/tutorial/java/javaOO/accesscontrol.htmlhttp://mindprod.com/jgloss/scope.html

【讨论】:

"包默认比...更严格" 可能还值得一提的是,在公开外部单元测试方法时,“package-private”是一个很好的范围。 如果是这种情况,那么为什么有必要公开某些内容,除非您正在创建一个库或任何用户可以从中获得代码功能的东西? @user3858162 大多数重要的应用程序都组织成多个包,在这种情况下,需要公共范围来调用来自其他包的调用方法。【参考方案2】:

任何定义为包私有的东西都可以被类本身、同一个包内的其他类访问,但不能在包外,也不能被子类访问。

请参阅this page 获取访问级别修饰符的方便表...

【讨论】:

【参考方案3】:

如果没有访问修饰符,类成员可以在声明它的整个包中访问。您可以通过Java Language Specification, §6.6.了解更多信息

无论是否明确声明,接口的成员始终是可公开访问的。

【讨论】:

【参考方案4】:

默认范围是“默认”。这很奇怪——请参阅 these references 了解更多信息。

【讨论】:

其实不是:它是包私有的 我无法删除我的答案,因为它已被接受。我鼓励乔接受@Esko 的回答! 第二个链接坏了(顺便说一句,这两个链接很容易错过)【参考方案5】:

Java 8 现在允许在具有 default 范围(且仅限静态)的接口内部实现方法。

【讨论】:

【参考方案6】:

如果您没有为您的方法提供任何修饰符,那么默认情况下它将是默认修饰符,它在包内具有范围。 更多信息可以参考http://wiki.answers.com/Q/What_is_default_access_specifier_in_Java

【讨论】:

以上是关于Java中方法的默认范围是啥?的主要内容,如果未能解决你的问题,请参考以下文章

java命令行参数的默认访问修饰符是啥[关闭]

java中产生随机数的函数是啥

JSF 2 应用程序中的默认托管 Bean 范围是啥?

c语言定义一维数组,元素未初始化,那数组元素默认值是啥

命名 CDI bean 的默认范围是啥?

Java的类,方法,变量等等的默认修饰符是啥