public | protected | 默认 | private | |
同一类 | √ | √ | √ | √ |
同一包下的类 | √ | √ | √ | |
不同包下的子类 | √ | √ | ||
不同包下的其他类 | √ |
以前一直以为私有修饰的静态方法是可以被访问的,今天突然发现不可以
public class test{
public static void main(String[] args) {
aaa.show();
}
}
class aaa{
private static void show(){
System.out.println("aaa");
}
}
//运行结果(bbb是包名)
Error:(12, 12) java: show()可以在bbb.aaa中访问private
包括上述表格权限不符合的一概不行,拿protected举例,在aaa包下有一个aaa类,bbb包下有一个bbb类
package aaa;
import bbb.bbb
public class aaa {
public static void main(String[] args) {
demo.show();
}
}
package bbb;
public class bbb {
protected static void show(){
System.out.println("bbb");
}
}
//运行结果
Error:(8, 12) java: show()可以在bbb.bbb中访问protected