java 中的包概念
Java 中的包package, 就相當於電腦中的文件夾。我們平時在工作中,文件太多時,都會新建文件夾進行分類管理,java 中的包也是類似的道理,當我們的類太多時,也需要進行管理。這時我們就會把類文件放到包中,就是把這個.class文件放到了一個文件夾中,這樣可以對類文件進行分類管理,同時也有效地避免了命名沖突。
當我們對java源文件進行編譯時,它會生成一個.class 文件,如果我們在java源文件的頂部,指定一個包名(package net;),編譯時,這個包名會生成一個文件夾,在這裏就是net文件夾,編譯好的.class文件則會放到該文件夾下。
package net; // 指定包名netpublic class Test { public static void main(String[] args) { System.out.println("hello"); } }
當包名很長時,如package net.com.cn,這時它就會生成多級文件夾,先生成net文件夾,然後在net文件夾中生成com文件夾,最後在com文件夾中生成cn文件夾,我們編譯生成的.class 文件就會放到cn 文件夾中。我們寫一個Animal 類,指定包名為net.com.cn
package net.com.cn; public class Animal {private String name; private int age; public Animal( String name, int age) { this.name = name; this.age = age; } public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() {return age; } public void setAge(int age) { this.age = age; } }
編譯之後,你會發現我們當前文夾中多了一個net文件夾,打開net文件夾,發現com文件夾,再找開com文件夾,發現cn 文件夾,在cn文件裏面才有我們的Animal.class 類文件。 如果有了包之後,這個類實際上叫做net.com.cn.Animal, 這個Animal類有了所屬,如果在java源文件中使有這個類創建對象,就要使用
net.com.cn.Animal cat = new net.com.cn.Animal();
這時我們使用類創建對象就非常麻煩了,所以出現了import導包。 把要使用的類直接導進來,我們在源代碼中就直接可以使用類名進行輸寫。 我們寫一個test.java文件
import net.com.cn.Animal; // 引入包 public class Test { public static void main(String[] args) { Animal cat = new Animal(); // 直接使用類名進行書寫 cat.setName("miaomiao"); System.out.println(cat.getName()); } }
當引入包之後,就是一個類文件有了所屬之後,這又帶來權限問題。如果包中的class類文件能夠被訪問,它必須是public的,包中的方法,如果能夠被訪問,它也必須是public. 包與包之間的類進行訪問,被訪問的包中的類必須是public權限的,被訪問的包中的類的方法也必須是public 權限的。
最後還有一個jar包,它就是一個壓縮文件,當我們編譯之後,類文件都放到了文件夾中,這時 我們再對文件夾進行壓縮,就形成了jar包, 就像我們在文件夾上面,點擊右鍵,生成winrar文件 一樣。因為壓縮文件體積小,有利於進行傳播。第三方包,就是通過 jar進行發布,我們直接導入jar包,就可以對裏面的類文件進行使用。
java 中的包概念