这就是我们在 Java 中所说的 access-level。
文档实际上非常棒,您可以在here 找到它。
请参见下表(从文档中复制)。
-
修饰符 -> 指
public、private、<no modiefier>和protected。
-
范围 -> 它指的是您尝试访问字段的位置(例如
class、subclass 等)
-
Y -> 表示可以从特定范围访问字段。
-
N -> 表示无法从特定范围访问字段。
访问级别
+--------------------------------------------------+
| Modifier | Class | Package | Subclass | World |
|-------------|-------|---------|----------|-------|
| public | Y | Y | Y | Y |
|-------------|-------|---------|----------|-------|
| protected | Y | Y | Y | N |
|-------------|-------|---------|----------|-------|
| no modifier | Y | Y | N | N |
|-------------|-------|---------|----------|-------|
| private | Y | N | N | N |
+--------------------------------------------------+
这实际上是一个非常有趣的事实,即不添加任何修饰符
您的代码实际上比使用 protected 修饰符更安全(与“世界”隔离)。
要使一个类(或方法)对世界其他地方隐藏,除了它自己的包之外,你不给它任何修饰符。就像我在下面用class ABC 展示的那样。
一种可能的解决方案是在同一个包中创建另一个类,该类只能访问您希望世界其他地方看到的字段。
package myPackage;
class ABC{
//implementation
}
package myPackage;
public class XYZ{
/**
*@return This method will invoke the getString() method in class ABC
*/
public String getString(){
return ABC.getString();//supposing that getString() is static
}
}
package different_package;
import myPackage.*;
public class Main{
//You could also do: 'myPackage.XYZ <variable name>'
XYZ xyzInstance= new XYZ();
/*some code*/
// Accesses the method you want
xyzInstance.getString();
}