我刚开始阅读一本 Java 书籍并想知道;如果没有指定,哪个访问说明符是默认的?
原文由 bennedich 发布,翻译遵循 CC BY-SA 4.0 许可协议
我刚开始阅读一本 Java 书籍并想知道;如果没有指定,哪个访问说明符是默认的?
原文由 bennedich 发布,翻译遵循 CC BY-SA 4.0 许可协议
默认说明符取决于上下文。
对于类和接口声明,默认为包私有。这介于受保护和私有之间,只允许同一包中的类访问。 (protected是这样的,但也允许访问包外的子类。)
class MyClass // package private
{
int field; // package private field
void calc() { // package private method
}
}
对于接口成员(字段和方法),默认访问权限是公共的。但请注意,接口声明本身默认为 package private。
interface MyInterface // package private
{
int field1; // static final public
void method1(); // public abstract
}
如果我们有声明
public interface MyInterface2 extends MyInterface
{
}
使用 MyInterface2 的类可以从超级接口中看到 field1 和 method1,因为它们是公共的,即使它们看不到 MyInterface 本身的声明。
原文由 mdma 发布,翻译遵循 CC BY-SA 2.5 许可协议
4 回答1.5k 阅读✓ 已解决
4 回答1.3k 阅读✓ 已解决
1 回答2.6k 阅读✓ 已解决
3 回答1.9k 阅读
2 回答777 阅读✓ 已解决
2 回答1.7k 阅读
2 回答1.3k 阅读
默认可见性称为“包私有”(尽管您不能显式使用它),这意味着可以从类所属的同一包内访问该字段。
正如 mdma 指出的那样,接口成员并非如此,默认值为“public”。
查看 Java 的访问说明符