Java中的访问控制 级别
private < default < protected < public
protected 访问级别略大于default,两者在同包下皆是可以访问相关类的受保护实例变量与方法。
《Java in a Nutshell》中“与基类不在同一个包中的子类,只能访问自身从基类继承而来的受保护成员,而不能访问基类实例本身的受保护成员”。
就是说与基类不在同一包中的子类,只能在子类的方法里通过super关键访问父类的相关受protected保护的变量与方法,而不能访问创建的父类实例的受protected保护的相关变量与放。可以直接访问父类的受protected保护的方法与变量。
package com.fu;
public class Base {
protected int protectedInt; //protected成员
public int publicInt; //public 成员
protected int getProtectedInt(){
return protectedInt;
}
protected static int staticProtectInt;
private int privateInt;
public static void main(String[] args) {
Base b=new Base();
b.privateInt=5;
}
}
不同包内派生类:com.zi
package c