Java 包(package)

來源:互聯網
上載者:User

標籤:windows   mkdir   虛擬機器   就是   jvm   public   自己的   怎樣   位元組   

在 animals 包中加入一個介面(interface):
Animal.java 檔案代碼:
/* 檔案名稱: Animal.java */
package animals;

interface Animal {
public void eat();
public void travel();
}
接下來,在同一個包中加入該介面的實現:
MammalInt.java 檔案代碼:
package animals;

/* 檔案名稱 : MammalInt.java */
public class MammalInt implements Animal{

public void eat(){
System.out.println("Mammal eats");
}

public void travel(){
System.out.println("Mammal travels");
}

public int noOfLegs(){
return 0;
}

public static void main(String args[]){
MammalInt m = new MammalInt();
m.eat();
m.travel();
}
}
然後,編譯這兩個檔案,並把他們放在一個叫做animals的子目錄中。 用下面的命令來運行:
$ mkdir animals
$ cp Animal.class MammalInt.class animals
$ java animals/MammalInt
Mammal eats
Mammal travel
import 關鍵字
為了能夠使用某一個包的成員,我們需要在 Java 程式中明確匯入該包。使用 "import" 語句可完成此功能。
在 java 源檔案中 import 語句應位於 package 語句之後,所有類的定義之前,可以沒有,也可以有多條,其文法格式為:
import package1[.package2…].(classname|*);
如果融金匯銀在一個包中,一個類想要使用本包中的另一個類,那麼該包名可以省略。
例子
下面的 payroll 包已經包含了 Employee 類,接下來向 payroll 包中添加一個 Boss 類。Boss 類引用 Employee 類的時候可以不用使用 payroll 首碼,Boss類的執行個體如下。
Boss.java 檔案代碼:
package payroll;

public class Boss
{
public void payEmployee(Employee e)
{
e.mailCheck();
}
}
如果 Boss 類不在 payroll 包中又會怎樣?Boss 類必須使用下面幾種方法之一來引用其他包中的類。
使用類全名描述,例如:
payroll.Employee
用 import 關鍵字引入,使用萬用字元 "*"
import payroll.*;
使用 import 關鍵字引入 Employee 類:
import payroll.Employee;
注意:
類檔案中可以包含任意數量的 import 聲明。import 聲明必須在包聲明之後,類聲明之前。
package 的目錄結構
類放在包中會有兩種主要的結果:
包名成為類名的一部分,正如我們前面討論的一樣。
包名必須與相應的位元組碼所在的目錄結構相吻合。
下面是管理你自己 java 中檔案的一種簡單方式:
將類、介面等類型的源碼放在一個文本中,這個檔案的名字就是這個類型的名字,並以.java作為副檔名。例如:
// 檔案名稱 : Car.java

package vehicle;

public class Car {
// 類實現
}
接下來,把源檔案放在一個目錄中,這個目錄要對應類所在包的名字。
....\vehicle\Car.java
現在,正確的類名和路徑將會是如下樣子:
類名 -> vehicle.Car
路徑名 -> vehicle\Car.java (在 windows 系統中)
通常,一個公司使用它互連網網域名稱的顛倒形式來作為它的包名.例如:互連網網域名稱是 runoob.com,所有的包名都以 com.runoob 開頭。包名中的每一個部分對應一個子目錄。
例如:有一個 com.runoob.test 的包,這個包包含一個叫做 Runoob.java 的源檔案,那麼相應的,應該有如下面的一連串子目錄:
....\com\runoob\test\Runoob.java
編譯的時候,編譯器為包中定義的每個類、介面等類型各建立一個不同的輸出檔案,輸出檔案的名字就是這個類型的名字,並加上 .class 作為擴充尾碼。 例如:
// 檔案名稱: Runoob.java

package com.runoob.test;
public class Runoob {

}
class Google {

}
現在,我們用-d選項來編譯這個檔案,如下:
$javac -d . Runoob.java
這樣會像下面這樣放置編譯了的檔案:
.\com\runoob\test\Runoob.class
.\com\runoob\test\Google.class
你可以像下面這樣來匯入所有 \com\runoob\test\ 中定義的類、介面等:
import com.runoob.test.*;
編譯之後的 .class 檔案應該和 .java 源檔案一樣,它們放置的目錄應該跟包的名字對應起來。但是,並不要求 .class 檔案的路徑跟相應的 .java 的路徑一樣。你可以分開來安排源碼和類的目錄。
<path-one>\bjrongjinhuiyin.com\runoob\test\Runoob.java
<path-two>\classes\com\runoob\test\Google.class
這樣,你可以將你的類目錄分享給其他的編程人員,而不用透露自己的源碼。用這種方法管理源碼和類檔案可以讓編譯器和java 虛擬機器(JVM)可以找到你程式中使用的所有類型。
類目錄的絕對路徑叫做 class path。設定在系統變數 CLASSPATH 中。編譯器和 java 虛擬機器通過將 package 名字加到 class path 後來構造 .class 檔案的路徑。
<path- two>\classes 是 class path,package 名字是 com.runoob.test,而編譯器和 JVM 會在 <path-two>\classes\com\runoob\test 中找 .class 檔案。
一個 class path 可能會包含好幾個路徑,多重路徑應該用分隔字元分開。預設情況下,編譯器和 JVM 尋找目前的目錄。JAR 檔案按包含 Java 平台相關的類,所以他們的目錄預設放在了 class path 中。

 

Java 包(package)

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.