注:protected 既包括protected 域,又包括protected 方法,以下统称为protected!
package A;
public class Father {
}
==================================================================================
package B;
import A.Father;
public class Son extends Father {
public static void main(String[] args) {
}
}
我们看到上面的程序会抛出两个错误,原因就在于:当子类与父类位于不同包中时,父类中的protected成员,对于父类本身是不可访问的,只有子类对象才可以访问!上面的程序我们可以把会出错的那两句改成:
这样就不会出错!
=======================================================================
在上面的例子上,再做一点修改,把Father 中的test()改为protected static void test()
然后在Son类中创建Father f = new Father();
此时,f 仍然不能访问f.i,但是f却可以访问test(),即用f.test()时,不会出错,原因是:
因为test() 是static Method , static method 调用 不需要通过对象的实例,跟写成 Son.test() 是一样的效果 !
===========================总结======================================
private(你无法访问): Java语言中对访问权限限制的最窄的修饰符,一般称之为“私有的”。被其修饰的类、属性以及方法只能被该类的对象访问,其子类不能访问,更不能允许跨包访问。