Java基礎教程(13)--包

  爲了使類型更易於查找,避免命名衝突和訪問控制,我們應該使用包來對自己定義的類型進行管理。這裏說的類型可以是類、接口、枚舉和註解(枚舉和註解的內容會在後續教程中介紹)。使用包來管理我們的代碼,有以下幾個目的:

  • 便於查找:將相似或相關的類型放在同一個包下,項目整體的結構更加清晰,同時也有助於自己和其他人在使用時可以輕鬆地找到對應的類型。
  • 避免命名衝突:如果自己代碼中的類型與其他已經存在的類型同名,使用包來創建新的命名空間可以避免命名衝突。
  • 訪問控制:對於使用public修飾的類型來說,在本包或其他包中都可以使用這個類型;對於沒有使用訪問修飾符的類型來說,則只能在本包中進行訪問,其他包中的類型則無法訪問。

1.包的命名規則

  包的命名滿足以下規則:

  1. 包名建議全部小寫,以避免與類或接口的名稱衝突;
  2. 父包和子包之間使用點(.)隔開;
  3. 建議將公司的互聯網域名以逆序的形式作爲包名,例如某公司的域名爲example.xyz,則mypackage包的命名爲xyz.example.mypackage;

2.將類型放入包中

  要想將一個類型放進包中,首先需要在源文件中使用package語句。package語句的語法是package關鍵字後面跟上這個類型所在的包。這條語句要放在源文件的開頭,例如:

package xyz.example.mypackage;

public class Demo {
    ...
}

  如果沒有在源文件中添加package語句,這個類型就被放在一個默認包中。一般來說,不推薦使用默認包,建議將每一個自己定義的類型都放在對應的包中。
  將一個類型放進包中不但要在源文件中使用package語句,還要將源文件放在與包名匹配的目錄中。例如,xyz.example.mypackage包中的源文件應該被放置在目錄xyz/example/mypackage中。

3.使用包中的類型

(1)使用完整的包名
  在要使用的類型前加上完整的包名,就可以在程序中使用這個類型了,例如:

java.util.List<String> list = new java.util.ArrayList<>();

(2)導入類型
  在每個類型前使用完整的包名顯然很繁瑣,更常用的方式是使用import語句。在import關鍵字後面跟上具體類型的完整路徑即可將該類型導入當前源文件。例如,上面的例子可以寫成:

import java.util.List;
import java.util.ArrayList;
...
List<String> list = new ArrayList<>();

(3)導入整個包
  還可以使用import導入某個包下所有的類型。就像下面這樣:

import java.util.*;

  需要注意的是,*代表該包下所有的類型,但不包括子包。如果要導入子包或子包中的類型,則需要另外的import語句。
(4)靜態導入
  import語句不僅可以導入類型,還可以導入靜態方法和靜態域。例如,如果在源文件的頂部添加一條語句:

import static java.lang.System.out;

就可以使用System類的靜態方法和域,而不必加類名前綴:

out.println("Hello, World!");
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章