当存在多包,子包,继承等时。为了保护类、变量、方法体、构造体的访问,因此有了访问控制修饰符。java
1、访问控制修饰符bash
2、protected的使用spa
一、建立ProtectedTest.java对象
package com.protectedtest; public class ProtectedTest { protected void test(){ System.out.println("my is father protected method"); } public static void main(String []args) { System.out.println("test start !"); } }
这里对方法test()用protected来修饰。而后编译ProtectedTest.java:blog
javac -d . ProtectedTest.java
二、建立ProtectedTestTwo.java继承
package com.protectedtest; public class ProtectedTestTwo extends ProtectedTest{ public static void main(String[] args){ /* 子类实例能够访问自身继承的test方法 */ ProtectedTestTwo getTest = new ProtectedTestTwo(); getTest.test(); /* 子类能够访问父类实例的test方法 */ ProtectedTest getTest2 = new ProtectedTest(); getTest2.test(); } }
运行ProtectedTestTwo.javathree
javac -d . ProtectedTestTwo.java java com.protectedtest.ProtectedTestTwo
结果以下:get
能够得出:在同一包内的任何其余类都能访问被声明为protected的对象、方法、构造体、变量。编译
三、建立ProtectedTestThree.javaclass
package com.protectedtestthree;
import com.protectedtest.ProtectedTest;
public class ProtectedTestThree extends ProtectedTest{
public static void main(String[] args){
/* 子类实例能够访问自身继承的test方法!*/
ProtectedTestThree getTest = new ProtectedTestThree();
getTest.test();
/* 编译会错误! 子类不能够访问父类实例的test方法!
ProtectedTest getTest2 = new ProtectedTest();
getTest2.test();
*/
}
}
运行ProtectedTestThree.java
javac -d . ProtectedTestThree.java java com.protectedtestthree.ProtectedTestThree
结果以下:
能够看到子类实例能够访问自身继承的test方法,而不能直接访问父类的实例的test方法。
3、注意点