包是什么?
在開(kāi)發(fā)過(guò)程中,會(huì)定義很多類,隨著類越寫(xiě)越多,難免會(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è)完整類名是包名+類名,在沒(méi)有 import 導(dǎo)入的情況下,使用一個(gè)類需要給出完整的類名
自定義包
操作步驟:
1.在 IDEA 中先新建一個(gè)包:右鍵 src → 新建 → 包
2.右鍵剛創(chuàng)建好的包→新建→類
輸入類名即可
3.找到相應(yīng)目錄 查看是否創(chuàng)建成功
4. Test.java 文件的最上方,出現(xiàn)了一個(gè) package 語(yǔ)句
包的訪問(wèn)權(quán)限控制
不同包
若手動(dòng)導(dǎo)入 Person 所在的包
到此這篇關(guān)于深入理解Java中包的定義與使用的文章就介紹到這了,更多相關(guān)Java 包內(nèi)容請(qǐng)搜索服務(wù)器之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持服務(wù)器之家!
原文鏈接:https://blog.csdn.net/m0_47988201/article/details/120306074