1. 程式人生 > >JAVA 包與包之間訪問(package)

JAVA 包與包之間訪問(package)

//僅作為學習筆記

一、包的用處
  • 對類檔案進行分類管理。
  • 給類提供多層名稱空間。
  • 寫在程式檔案的第一行。
  • 類名的全稱的是  :包名.類名。
  • 包也是一種封裝形式。
package cn.itstu;
class PackageDemo
{    
	/*
	用javac -d . PackageDemo.java  在當前目錄下自動生成包的資料夾
	【javac -d c:\ PackageDemo.java】在指定目錄C盤下自動生成包的資料夾
	注意:執行.class的檔案時正確的類名是:java cn.itstu.PackageDemo
	*/
	public static void main(String args[])
	{
		System.out.println("hello package!!");
	}
}
二、包與包之間的訪問
package cn.itstu;
class PackageDemo
{    
	/*
	  將原始檔編譯打包到C:\myclass 資料夾下
	*/
	public static void main(String args[])
	{   
		/* cmd輸入命令
		 1.javac -d c:\myclass DemoA.java
		 2.set classpath=c:\myclass
		 3.javac -d c:\myclass PackageDemo.java
		 4.java cn.itstu.PackageDemo
		*/
		packa.DemoA d=new packa.DemoA();
        d.show();

		//packb.DemoB b=new packb.DemoB(); 
		//b.method();  error 訪問許可權不夠
	}
}


package packa;
public class DemoA extends packb.DemoB //類的許可權必須是public
{
	
		public void show()//方法的許可權也必須是public
		{
			System.out.println("demoa show run");
			method();
		}
	
}
package packb;
public class DemoB 
{
  /* public */ protected void method()
	{
	   System.out.println("demob method run");
	}

	/*當method方法被public修飾,可以被其子類DemoA訪問,
	也可以被其他包的類訪問,但是當method方法被protected
	修飾,method方法只能被其子類訪問。
	*/
}
結論:
  1. 包與包之間進行訪問,被訪問的包中的類以及類中的成員,需要public修飾。
  2. 不同包中的子類還可以直接訪問父類中被protected許可權修飾的成員。
  3. 包與包之間可以使用的許可權只有兩種,public  protected。
              public       protected      default         private 同一類中    OK             OK                OK                 OK 同一包中    OK             OK                OK                 NO 子類            OK             OK                NO                 NO 其他類中    OK             NO                NO                 NO
三、導包 import
通過import我們可以簡化類名的書寫。 包名我們一般用url,因為url具有唯一性。如: package com.qq.demo;  導包:import com.qq.demo.*;  //*是萬用字元,表示匯入com.qq.demo包下的所有類,開發中推薦使用匯入具體類名,需要哪個類匯入哪個,可以節省記憶體開銷,如: import com.qq.demo.ClassA;
注意:我們匯入兩個包 import packa.*;   import packb.*;  如果這兩個包中有相同的類classA存在,我們在使用類的時候必須指明使用哪個包下的該類 如  :packa.ClassA  a=new packa.ClassA();        packb.ClassA  b=new packb.ClassA();
四、jar包
  • Java的壓縮包
  • 方便專案的攜帶。
  • 方便於使用,只要在classpath設定jar路徑即可。
  • 資料庫驅動,SSH框架等都是以jar包體現的。
通過jar.exe工具對jar的操作。
• 建立jar包           jar  -cvf  mypack.jar  packa packb
• 檢視jar包           jar  -tvf  mypack.jar   [>定向檔案]               如:jar  -tvf  mypack.jar  >c:\1.txt
• 解壓縮               jar  -xvf  mypack.jar
• 自定義jar包的清單檔案         jar –cvfm  mypack.jar  mf.txt  packa packb