當存在多包,子包,繼承等時。爲了保護類、變量、方法體、構造體的訪問,因此有了訪問控制修飾符。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、注意點