作用域 | private | 默认 | protected | public |
本类 | Y | Y | Y | Y |
同一包中的类 | Y | Y | Y | |
不同包中的子类 | Y | Y | ||
不同包中的非子类 | Y |
Public | Protected | -- | Private | Static | Final | Abstract | |
类 | Y | Y | Y | N | N | Y | Y |
属性 | Y | Y | Y | Y | Y | Y | N |
方法 | Y | Y | Y | Y | Y | Y | Y |
局部变量 | N | N | N | N | N | Y | N |
内部类 | Y | Y | Y | Y | Y | Y | Y |
public class Pet {
protected int i = 3;
}
import com.aiai.study.oo.Pet;
public class Dog extends Pet {
public static void main(String[] args) {
Pet p = new Pet();
// 不同包中的父类对象不能访问
// p.i = 3;
// 不同包中的子类内部可以访问
Dog dog = new Dog();
dog.i = 3;
}
}
class Test {
public void test() {
Dog dog = new Dog();
// 不同包中非子类中,不能通过子类对象访问
// dog.i = 3;
}
}