/*
3,權限在不同地方的體現: public protected default private
同一類中: ok ok ok ok
同一包中: ok ok ok
子類中: ok ok
不同包中: ok 在同一包中子類中是可以訪問父類中默認權限(default)的方法,但是在不同包中不行!
在不同包中如果子類繼承了父類,那么子類就可以訪問父類中的protected方法!
*///import mytest.*;
/*
package mytest;
public class DemoA{public void show(){new Demo().show();}
}class Demo{void show(){System.out.println("DemoA 中 Demo show!");}
}
*//*
package mytestone;
import mytest.*;
public class DemoAChild extends DemoA{public void show(){super.show();System.out.println("DemoAChild show!");}
}
*/public class Test{public static void main(String[] args){//DemoA在mytest包中,將show方法protected之后就會掛掉//mytest.DemoA x = new mytest.DemoA();//x.show();// DemoAChild 繼承了 DemoA, 該show方法也是protected權限,但是沒有放在包中。正常運行!//DemoAChild xx = new DemoAChild();//xx.show();//DemoAChild 繼承了 DemoA,并放在包中, 該show方法必須是public權限才正常運行!mytestone.DemoAChild xx = new mytestone.DemoAChild();xx.show();}
} /*
錯誤1:
Test.java:4: 錯誤: 無法訪問DemoADemoA x = new DemoA();^錯誤的類文件: .\DemoA.class類文件包含錯誤的類: mytest.DemoA請刪除該文件或確保該文件位于正確的類路徑子目錄中。
1 個錯誤原因:DemoA這個類是屬于包mytest體系的,沒有放在正確的子路徑下!之前的編譯為:javac DemoA.java
處理:刪掉編譯產生的.class文件, 重新編譯 javac -d . DemoA.java(讓系統自動生成包的子目錄);——----------------------------------------------------------
錯誤2:
Test.java:4: 錯誤: 無法訪問DemoADemoA x = new DemoA();^錯誤的源文件: .\DemoA.java文件不包含類DemoA請刪除該文件或確保該文件位于正確的源路徑子目錄中。
1 個錯誤原因:源文件和自定義的包在同一子目錄下!
處理:請刪除該文件或確保該文件位于正確的源路徑子目錄中。或者明確 DemoA的所屬包,即 mytest.DemoA--------------------------------------------------------------
錯誤3:
Test.java:4: 錯誤: 找不到符號DemoA x = new DemoA();^符號: 類 DemoA位置: 類 Test
2 個錯誤原因:類名錯誤。
處理:因為DemoA已經有包所屬,必須明確其包名。所以應為 包名.DemoA 即 mytest.DemoA或者 import mytest.*; 導入包中的類
--------------------------------------------------------------
錯誤4:
Test.java:4: 錯誤: DemoA在mytest中不是公共的; 無法從外部程序包中對其進行訪問mytest.DemoA x = new mytest.DemoA();^
原因:包與包之間的訪問權限必須是public的! 否則 其他的三個(protected default private)權限都是將類封裝在包內!
處理:那就加上public白!---------------------------------------------------------------
錯誤5:
Test.java:5: 錯誤: show()在DemoA中不是公共的; 無法從外部程序包中對其進行訪問x.show();^
1 個錯誤
原因:包中的類是對外公有的,所以該類的成員方法如果在其他包中的類中使用必須也將權限定義為公有!
處理:再加上public白!*/