深入理解Java中包的定義與使用
包是什么?
在開發(fā)過程中,會(huì)定義很多類,隨著類越寫越多,難免會(huì)出現(xiàn)類重名而發(fā)生覆蓋的情況,為了在使用它們的時(shí)候不讓編譯器混淆,我們給類加上一個(gè)限定 (前綴),把所有java程序保存在各自的目錄里面,而該目錄就是包,包的本質(zhì)實(shí)際上就是一個(gè)文件夾
即:把它們放在不同的包里面,調(diào)用時(shí)再加上前綴即可;這樣好處是對(duì)同名的類進(jìn)行了區(qū)分;能精確指出我們需要的哪一個(gè);讓同名的類在一個(gè)程序中可以共存
在Java中,包是對(duì)類、接口等的封裝機(jī)制的體現(xiàn),是一種對(duì)類或接口等的很好的組織方式
包的作用
在同一個(gè)工程中允許存在相同名稱的類,只要處在不同的包中即可
避免了類型之間命名沖突:包作為一種封裝,給類提供多層命名空間
導(dǎo)入包中的類
以導(dǎo)入時(shí)間戳為例:
方法1 使用類的全路徑
public class PackageTest { public static void main(String[] args) { java.util.Date time = new java.util.Date(); System.out.println(time.getTime()); java.util.Date time2 = new java.util.Date(); System.out.println(time2.getTime()); } }
優(yōu)點(diǎn):一定不會(huì)發(fā)生沖突
缺點(diǎn):使用麻煩,每 new 一個(gè)對(duì)象都需要
方法2 導(dǎo)入包
可直接使用 import java.util.*,導(dǎo)入util 里的所有類
import java.util.Date; public class PackageTest { public static void main(String[] args) { Date time3 = new Date(); System.out.println(time3.getTime()); Date time4 = new Date(); System.out.println(time4.getTime()); } }
舉例:
上述示例:不明確 Date 到底是 sql 中的類,還是 util 中的類
解決方法:使用方式一包的全路徑即可~
優(yōu)點(diǎn):使用方便
缺點(diǎn):可能會(huì)產(chǎn)生沖突
方法3 靜態(tài)導(dǎo)入包
類里若存在同名的靜態(tài)方法,也有可能會(huì)發(fā)生沖突、
//可以直接使用Math類中的所有靜態(tài)成員 import static java.lang.Math.*; public class PackageTest { public static void main(String[] args) { System.out.println(sqrt(100)); System.out.println(max(1,5)); System.out.println(min(6,7)); } }
總結(jié):一個(gè)完整類名是包名+類名,在沒有 import 導(dǎo)入的情況下,使用一個(gè)類需要給出完整的類名
自定義包
操作步驟:
1.在 IDEA 中先新建一個(gè)包:右鍵 src → 新建 → 包
2.右鍵剛創(chuàng)建好的包→新建→類
輸入類名即可
3.找到相應(yīng)目錄 查看是否創(chuàng)建成功
4. Test.java 文件的最上方,出現(xiàn)了一個(gè) package 語句
包的訪問權(quán)限控制
不同包
若手動(dòng)導(dǎo)入 Person 所在的包
到此這篇關(guān)于深入理解Java中包的定義與使用的文章就介紹到這了,更多相關(guān)Java 包內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Spring中ApplicationContext的拓展功能詳解
這篇文章主要介紹了Spring中ApplicationContext的拓展功能詳解,相對(duì)于BeanFactory來說,ApplicationContext除了提供BeanFactory的所有功能外,還有一些其他的功能,主要包括國際化支持、資源訪問、事件傳遞,需要的朋友可以參考下2024-01-01SpringBoot應(yīng)用啟動(dòng)過程分析
這篇文章主要介紹了SpringBoot應(yīng)用啟動(dòng)過程分析,需要的朋友可以參考下2017-08-08springboot響應(yīng)json?null值過濾方式
這篇文章主要介紹了springboot響應(yīng)json?null值過濾方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-11-11JAVA中HTTP基本認(rèn)證(Basic Authentication)實(shí)現(xiàn)
HTTP 基本認(rèn)證是一種簡單的認(rèn)證方法,本文主要介紹了JAVA中HTTP基本認(rèn)證(Basic Authentication),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2024-07-07Java數(shù)據(jù)庫連接池之DBCP淺析_動(dòng)力節(jié)點(diǎn)Java學(xué)院整理
這篇文章主要為大家詳細(xì)介紹了Java數(shù)據(jù)庫連接池之DBCP的相關(guān)資料,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-08-08Java中replace與replaceAll的區(qū)別與測試
replace和replaceAll是JAVA中常用的替換字符的方法,下面這篇文章主要給大家介紹了關(guān)于Java中replace與replaceAll的區(qū)別與測試,文中通過實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下2022-09-09Java實(shí)現(xiàn)4種微信搶紅包算法(小結(jié))
微信紅包是大家經(jīng)常使用的,到現(xiàn)在為止仍然有很多紅包開發(fā)的需求,實(shí)現(xiàn)搶紅包算法也是面試??碱},本文就詳細(xì)的來介紹一下如何實(shí)現(xiàn),感興趣的可以了解一下2021-12-12