精品熟女碰碰人人a久久,多姿,欧美欧美a v日韩中文字幕,日本福利片秋霞国产午夜,欧美成人禁片在线观看

Java 包(package)

java 包(package)

為了更好地組織類,java 提供了包機制,用于區別類名的命名空間。

 

1. 包的作用

  • 1、把功能相似或相關的類或接口組織在同一個包中,方便類的查找和使用。
  • 2、如同文件夾一樣,包也采用了樹形目錄的存儲方式。同一個包中的類名字是不同的,不同的包中的類的名字是可以相同的,當同時調用兩個不同包中相同類名的類時,應該加上包名加以區別。因此,包可以避免名字沖突。
  • 3、包也限定了訪問權限,擁有包訪問權限的類才能訪問某個包中的類。

java 使用包(package)這種機制是為了防止命名沖突,訪問控制,提供搜索和定位類(class)、接口、枚舉(enumerations)和注釋(annotation)等。

包的語法格式為:

package pkg1[.pkg2[.pkg3…]];

例如:一個 something.java 文件的內容。

package net.java.util;

public class something{
    ...
}

那么它的路徑應該是 net/java/util/something.java 這樣保存的。 package(包) 的作用是把不同的 java 程序分類保存,更方便的被其他 java 程序調用。

一個包(package)可以定義為一組相互聯系的類型(類、接口、枚舉和注釋),為這些類型提供訪問保護和命名空間管理的功能。

以下是一些 java 中的包:

  • java.lang-打包基礎的類
  • java.io-包含輸入輸出功能的函數

開發者可以自己把一組類和接口等打包,并定義自己的包。而且在實際開發中這樣做是值得提倡的,當你自己完成類的實現之后,將相關的類分組,可以讓其他的編程者更容易地確定哪些類、接口、枚舉和注釋等是相關的。

由于包創建了新的命名空間(namespace),所以不會跟其他包中的任何名字產生命名沖突。使用包這種機制,更容易實現訪問控制,并且讓定位相關類更加簡單。

 

2. 創建包

創建包的時候,你需要為這個包取一個合適的名字。之后,如果其他的一個源文件包含了這個包提供的類、接口、枚舉或者注釋類型的時候,都必須將這個包的聲明放在這個源文件的開頭。

包聲明應該在源文件的第一行,每個源文件只能有一個包聲明,這個文件中的每個類型都應用于它。

如果一個源文件中沒有使用包聲明,那么其中的類,函數,枚舉,注釋等將被放在一個無名的包(unnamed package)中。

范例如下:

讓我們來看一個例子,這個例子創建了一個叫做animals的包。通常使用小寫的字母來命名避免與類、接口名字的沖突。

在 animals 包中加入一個接口(interface):

/* 文件名: animal.java */
package animals;
    
interface animal {
    public void eat();
    public void travel();
}

接下來,在同一個包中加入該接口的實現:

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

 

3. import 關鍵字

為了能夠使用某一個包的成員,我們需要在 java 程序中明確導入該包。使用 "import" 語句可完成此功能。

在 java 源文件中 import 語句應位于 package 語句之后,所有類的定義之前,可以沒有,也可以有多條,其語法格式為:

import package1[.package2…].(classname|*);    

如果在一個包中,一個類想要使用本包中的另一個類,那么該包名可以省略。

范例如下:

下面的 payroll 包已經包含了 employee 類,接下來向 payroll 包中添加一個 boss 類。boss 類引用 employee 類的時候可以不用使用 payroll 前綴,boss 類的范例如下。

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 聲明必須在包聲明之后,類聲明之前。

 

4. package 的目錄結構

類放在包中會有兩種主要的結果:

  • 包名成為類名的一部分,正如我們前面討論的一樣。
  • 包名必須與相應的字節碼所在的目錄結構相吻合。

下面是管理你自己 java 中文件的一種簡單方式:

將類、接口等類型的源碼放在一個文本中,這個文件的名字就是這個類型的名字,并以 .java 作為擴展名。例如:

// 文件名 :  car.java
package vehicle;
    
public class car {
    // 類實現  
}

接下來,把源文件放在一個目錄中,這個目錄要對應類所在包的名字。

....\vehicle\car.java

現在,正確的類名和路徑將會是如下樣子:

  • 類名 -> vehicle.car
  • 路徑名 -> vehicle\car.java (在 windows 系統中)

通常,一個公司使用它互聯網域名的顛倒形式來作為它的包名.例如:互聯網域名是 yapf.com,所有的包名都以 com.yapf 開頭。包名中的每一個部分對應一個子目錄。

例如:有一個 com.yapf.test 的包,這個包包含一個叫做 yapf.java 的源文件,那么相應的,應該有如下面的一連串子目錄:

....\com\yapf\test\yapf.java

編譯的時候,編譯器為包中定義的每個類、接口等類型各創建一個不同的輸出文件,輸出文件的名字就是這個類型的名字,并加上 .class 作為擴展后綴。 例如:

// 文件名: yapf.java
package com.yapf.test;
public class yapf {
        
}
class google {
        
}

現在,我們用-d選項來編譯這個文件,如下:

$javac -d . yapf.java

這樣會像下面這樣放置編譯了的文件:

.\com\yapf\test\yapf.class
.\com\yapf\test\google.class

你可以像下面這樣來導入所有 \com\yapf\test\ 中定義的類、接口等:

import com.yapf.test.*;

編譯之后的 .class 文件應該和 .java 源文件一樣,它們放置的目錄應該跟包的名字對應起來。但是,并不要求 .class 文件的路徑跟相應的 .java 的路徑一樣。你可以分開來安排源碼和類的目錄。

<path-one>\sources\com\yapf\test\yapf.java
<path-two>\classes\com\yapf\test\google.class

這樣,你可以將你的類目錄分享給其他的編程人員,而不用透露自己的源碼。用這種方法管理源碼和類文件可以讓編譯器和java 虛擬機(jvm)可以找到你程序中使用的所有類型。

類目錄的絕對路徑叫做 class path。設置在系統變量 classpath 中。編譯器和 java 虛擬機通過將 package 名字加到 class path 后來構造 .class 文件的路徑。

<path- two>\classes 是 class path,package 名字是 com.yapf.test,而編譯器和 jvm 會在 <path-two>\classes\com\yapf\test 中找 .class 文件。

一個 class path 可能會包含好幾個路徑,多路徑應該用分隔符分開。默認情況下,編譯器和 jvm 查找當前目錄。jar 文件按包含 java 平臺相關的類,所以他們的目錄默認放在了 class path 中。

 

5. 設置 classpath 系統變量

用下面的命令顯示當前的classpath變量:

  • windows 平臺(dos 命令行下):c:\> set classpath
  • unix 平臺(bourne shell 下):# echo $classpath
刪除當前classpath變量內容:
  • windows 平臺(dos 命令行下):c:\> set classpath=
  • unix 平臺(bourne shell 下):# unset classpath; export classpath

設置classpath變量:

  • windows 平臺(dos 命令行下): c:\> set classpath=c:\users\jack\java\classes
  • unix 平臺(bourne shell 下):# classpath=/home/jack/java/classes; export classpath

下一節:java override 與 overload

java語言 教程

相關文章