"包私有"成员访问是否与默认(无修饰符)访问同义?

Tur*_*oes 93 java terminology protected access-modifiers package-private

我对一些文档使用的术语"包私有"以及"默认访问"的使用感到有些困惑.包私有和默认访问都不是protected的同义词吗?

Luc*_*sio 132

是的,几乎是一样的.protected修饰符指定只能在其自己的包中访问该成员(与package-private一样),此外,还可以在另一个包中通过其类的子类访问该成员.

  • 值得注意的是,接口成员的默认访问权限是*not*package-private. (23认同)
  • 字段的默认值是`public static final`,方法是`public abstract`,枚举或注释是`public`,对于类`public static`` (8认同)

Adr*_*scu 34

"默认"访问修饰符(没有明确给出它们的那个)是"package-private",这意味着只有同一个包中的东西才能访问它们.但是,在同一个包中并不意味着类之间的继承关系 - 它纯粹是一个命名约定.

"受保护"意味着不仅同一个包中的类,而且子类(无论这些子类在哪个包中)都能够访问它.


Pet*_*rey 14

的默认访问权限是package-private,但接口成员的默认访问权限是public.

例如

public interface I {
   int A = 1;
// same as
   public static final int A = 1;

   void method();
// same as
   public abstract void method();

   class C { }
// same as
   public static class C { }
}
Run Code Online (Sandbox Code Playgroud)

接口的默认访问规则与类不同.