【发布时间】:2010-10-17 10:04:02
【问题描述】:
如果我输入:
void doThis(){
System.out.println("Hello Stackoverflow.");
}
doThis() 的默认范围是什么?
公开?受保护?私人的?
【问题讨论】:
如果我输入:
void doThis(){
System.out.println("Hello Stackoverflow.");
}
doThis() 的默认范围是什么?
公开?受保护?私人的?
【问题讨论】:
默认范围是包私有。同一个包中的所有类都可以访问方法/字段/类。包私有比受保护和公共范围更严格,但比私有范围更宽松。
更多信息:
http://docs.oracle.com/javase/tutorial/java/javaOO/accesscontrol.html
http://mindprod.com/jgloss/scope.html
【讨论】:
任何定义为包私有的东西都可以被类本身、同一个包内的其他类访问,但不能在包外,也不能被子类访问。
请参阅this page 获取访问级别修饰符的方便表...
【讨论】:
如果没有访问修饰符,类成员可以在声明它的整个包中访问。您可以通过Java Language Specification, §6.6.了解更多信息
无论是否明确声明,接口的成员始终是可公开访问的。
【讨论】:
默认范围是“默认”。这很奇怪——请参阅 these references 了解更多信息。
【讨论】:
Java 8 现在允许在具有 default 范围(且仅限静态)的接口内部实现方法。
【讨论】:
如果您没有为您的方法提供任何修饰符,那么默认情况下它将是默认修饰符,它在包内具有范围。
更多信息可以参考http://wiki.answers.com/Q/What_is_default_access_specifier_in_Java
【讨论】: