java基础之包
包(package)
? >>對(duì)文件進(jìn)行分類管理
? >>給類提供多層命名空間
? >>寫在程序文件的第一行
? >>包類的全程 包名.類名
? >>包也是一種封裝形式
——————————————————————————————————————
1.名字必須要是全小寫
2.包必須在第一行
自動(dòng)生成包
?? >>.代表是當(dāng)前目錄命令
?? >>javac -d . 類名
???? java 包名.類名
存放在其他地方下的包目錄 (包的出現(xiàn),可以將類文件class文件和程序文件.java)
?? >> java -d c:\myclass? 類名
?? >> set classpath=c:\myclass
?? >>java 包名.類名
——————————————————————————————————————
總結(jié)
? >>不同包中的包之間進(jìn)行訪問(wèn),被訪問(wèn)的包中的類以及類中的成員(方法),需要public修飾
?? packsge pack;
???????? public class PackDemo{
??????????????? public static void main(String args[]){
?????????????????????? packa.DemoA a=new packa.DemonA();
?????????????????????? a.show();
??????????????? }??
?????
???????? }
**************************************************************************************
?? package packa;
???????? public class DemoA{
?????????????? public static void main(String args[]){
???????????????????? public void show(){System.out.print("DemoA runing );}
?????????????? }
???????? }
_______________________________________________________________________________________
包的結(jié)構(gòu)圖
? >>c:\myclass\pack\PackDemo.class
? >>c:\myclass\packa\DemoA.class
包樹(shù)狀流程圖
?? |--myclass
????? |--pack
???????? |--PackDemo.class
????? |--packa
???????? |--DemoA.class
編譯流程
?? set classpath=c:\myclass??
?? javac -d c:\myclass DemoA.java
?? javac -d c:\myclass PackDemo.java
?? java?? pack.PackDemo
編譯結(jié)果:
?DemoA runing
__________________________________________________________________________________________
包與包之間可能會(huì)發(fā)生的錯(cuò)誤由以下幾個(gè)原因:
?? 1.發(fā)生軟件包不存在的情況
?????? 如:在myclass包中找不到packa包,這時(shí)候我們需要設(shè)置臨時(shí)的classpath
?????? >>set classpath=c:\myclass??
???????? 包樹(shù)狀流程圖
??????????? |--myclass
?????????????? |--pack
????????????????? |--PackDemo.class
?????????????? |--packa
????????????????? |--DemoA.class
_____________________________________________________________________________________________
??? 2.類以類之間采用默認(rèn)的權(quán)限protected,導(dǎo)致不同的包里的被訪問(wèn)的類以及其成員(例如show())不能進(jìn)行訪問(wèn)(這里使用不同的包時(shí)候要用import關(guān)鍵字導(dǎo)入相應(yīng)的包)
???? class PackDemo
???? class DemoA
???? show()
???? 在進(jìn)行編譯PackDemo的時(shí)候,
??????????????? 會(huì)產(chǎn)生找不到符號(hào)
???????????????????????? 符號(hào) :類 DemoA
???????????????????????? 位置 :類 pack.DemoA
????? 錯(cuò)誤的原因是:類名寫錯(cuò)了,應(yīng)該采取包名.類名的形式(這里也可以是以使用import關(guān)鍵字導(dǎo)入相應(yīng)的包名,這樣就可以不用寫包名.類名的形式)
?????????????? 在PackDemo創(chuàng)建的DemoA不再同一個(gè)包中,這時(shí)候,我們就要用包.類名的方式(這個(gè)也說(shuō)明了包具有封裝數(shù)據(jù)的特性)
_______________________________________________________________________________________________________________________
????????????????????????????????????
? >>不同的包中的子類可以訪問(wèn)父類中被protected權(quán)限修飾的成員
???? 說(shuō)明:如我們的例子,代碼如下,我們可以看到DemoA 繼承了DemoB,在PackDemo調(diào)用DemoA時(shí)候,因?yàn)镈emoA繼承于DemoB
?? packsge pack;
???????? public class PackDemo{
??????????????? public static void main(String args[]){
?????????????????????? packa.DemoA a=new packa.DemonA();
?????????????????????? a.show();
??????????????? }??
?????
???????? }
?? package packa;
???????? public class DemoA enxtends DemoB{
?????????????? public static void main(String args[]){
???????????????????? public void show(){System.out.print("DemoA runing );}
???????????????????? method();
?????????????? }
???????? }
?? package? packb
???????? public class DemoB{
?????????????? public static void main(String args[]
???????????????????? public void method(){System.out.print(("DemoB runing");}
?????????????? }
???????? }
包的結(jié)構(gòu)圖
? >>c:\myclass\pack\PackDemo.class
? >>c:\myclass\packa\DemoA.class
? >>c:\myclass\packb\DemoB.class
包樹(shù)狀流程圖
?? |--myclass
????? |--pack
???????? |--PackDemo.class
????? |--packa
???????? |--DemoA.class
????? |--packb
???????? |--DemoB.class
編譯流程
?? set classpath=c:\myclass??
?? javac -d c:\myclass DemoA.java
?? javac -d c:\myclass DemoB.java
?? javac -d c:\myclass PackDemo.java
?? java?? pack.PackDemo
編譯結(jié)果:
?DemoA runing
?DemoB runing
______________________________________________________________________________________________________________________
轉(zhuǎn)載于:https://www.cnblogs.com/heji/p/5910961.html
創(chuàng)作挑戰(zhàn)賽新人創(chuàng)作獎(jiǎng)勵(lì)來(lái)咯,堅(jiān)持創(chuàng)作打卡瓜分現(xiàn)金大獎(jiǎng)總結(jié)
- 上一篇: nginx日志格式、参数及切分
- 下一篇: 软件工程学期总结