java中包容易出现的错误及权限问题
生活随笔
收集整理的這篇文章主要介紹了
java中包容易出现的错误及权限问题
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
/*
3,權(quán)限在不同地方的體現(xiàn): public protected default private
同一類中: ok ok ok ok
同一包中: ok ok ok
子類中: ok ok
不同包中: ok 在同一包中子類中是可以訪問父類中默認(rèn)權(quán)限(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權(quán)限,但是沒有放在包中。正常運(yùn)行!//DemoAChild xx = new DemoAChild();//xx.show();//DemoAChild 繼承了 DemoA,并放在包中, 該show方法必須是public權(quán)限才正常運(yùn)行!mytestone.DemoAChild xx = new mytestone.DemoAChild();xx.show();}
} /*
錯(cuò)誤1:
Test.java:4: 錯(cuò)誤: 無法訪問DemoADemoA x = new DemoA();^錯(cuò)誤的類文件: .\DemoA.class類文件包含錯(cuò)誤的類: mytest.DemoA請刪除該文件或確保該文件位于正確的類路徑子目錄中。
1 個(gè)錯(cuò)誤原因:DemoA這個(gè)類是屬于包mytest體系的,沒有放在正確的子路徑下!之前的編譯為:javac DemoA.java
處理:刪掉編譯產(chǎn)生的.class文件, 重新編譯 javac -d . DemoA.java(讓系統(tǒng)自動(dòng)生成包的子目錄);——----------------------------------------------------------
錯(cuò)誤2:
Test.java:4: 錯(cuò)誤: 無法訪問DemoADemoA x = new DemoA();^錯(cuò)誤的源文件: .\DemoA.java文件不包含類DemoA請刪除該文件或確保該文件位于正確的源路徑子目錄中。
1 個(gè)錯(cuò)誤原因:源文件和自定義的包在同一子目錄下!
處理:請刪除該文件或確保該文件位于正確的源路徑子目錄中。或者明確 DemoA的所屬包,即 mytest.DemoA--------------------------------------------------------------
錯(cuò)誤3:
Test.java:4: 錯(cuò)誤: 找不到符號DemoA x = new DemoA();^符號: 類 DemoA位置: 類 Test
2 個(gè)錯(cuò)誤原因:類名錯(cuò)誤。
處理:因?yàn)镈emoA已經(jīng)有包所屬,必須明確其包名。所以應(yīng)為 包名.DemoA 即 mytest.DemoA或者 import mytest.*; 導(dǎo)入包中的類
--------------------------------------------------------------
錯(cuò)誤4:
Test.java:4: 錯(cuò)誤: DemoA在mytest中不是公共的; 無法從外部程序包中對其進(jìn)行訪問mytest.DemoA x = new mytest.DemoA();^
原因:包與包之間的訪問權(quán)限必須是public的! 否則 其他的三個(gè)(protected default private)權(quán)限都是將類封裝在包內(nèi)!
處理:那就加上public白!---------------------------------------------------------------
錯(cuò)誤5:
Test.java:5: 錯(cuò)誤: show()在DemoA中不是公共的; 無法從外部程序包中對其進(jìn)行訪問x.show();^
1 個(gè)錯(cuò)誤
原因:包中的類是對外公有的,所以該類的成員方法如果在其他包中的類中使用必須也將權(quán)限定義為公有!
處理:再加上public白!*/
轉(zhuǎn)載于:https://www.cnblogs.com/hujunzheng/p/3871941.html
總結(jié)
以上是生活随笔為你收集整理的java中包容易出现的错误及权限问题的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 同花顺怎么看北向资金
- 下一篇: 花呗2000逾期五个月 不还会有什么后