當一個專案非常龐大的時候,有各式各樣不同功能的程式碼,這時候如果沒有分類的話,不是你的眼睛先脫窗就是你的腦袋先爆炸。
Java使用package
進行分類,使用import
將不同分類好的package
引入使用。
package
代表一個包
,裡面放的是這個程式中定義好的類
或接口
等文件位置,一個.java
文件中只會有一個package
,並且要放在class
外面和上面。
格式:package folder_name;
一般在命名一個專案時,會依照網域的倒過來並且全部使用小寫命名(並且以能夠一眼就知道它的功能是甚麼為主,假設今天公司網域為www.jaspercompany.com
時,會設定成com/jaspercompany/各個java的package
。
例如這樣:
src/
└── com/
└── jaspercompany/
└── person/
└── Person.java
在Person.jave
檔案中的上方會有這個package
的位置。
package com.jaspercompany.people;
package
中也可以再放其他的package
,並且會用.
當作是不同資料夾的分層。
格式:package folder_name.other_folder_name;
src/
└── com/
└── jaspercompany/
└── person/
└── Person.java
└── person_behavior
└── PersonBehavior.java
在PersonBehavior.jave
檔案中的上方會有這個package
的位置。
package com.jaspercompany.people.person_behavior;
使用package
的優點:
class
時能夠標示能不能夠給其他的class
使用(後續會再提到)。一個package
中不可以定義多個相同名稱的class
,但是不同的package
是可以定義相同名稱的。
import
指的是從其他定義好的package
中引用class
使用。
import java.utils.Arrays;
這樣就可以使用Arrays
中的方法
等。
當要引用這個package
中的所有class
時可以在後面直接加上*
。
例如:
import java.utils.*;
這樣就可以直接使用java.utils
中所有的class
,但是如果裡面的class
又有其他的package
時,是沒有辦法直接使用。
當使用不同package
但是相同class
名稱時,其中一個可以使用import
的方式,但是另一個需要在使用時輸入完整的package
位置。
例如:
import java.util.Date;
public class Person {
public static void main(String[] args) {
Date birthday = new Date();
java.sql.Date now = new java.sql.Date(415657L);
}
}
已經import java.util.Date
了,所以birthday
是可以直接宣告型別
並實例化
,但是要使用java.sql.Date
時,在宣告時需要加入完整的package
位置,並且實例化
時也同樣要加上。