- 相關(guān)推薦
Java編程里的包及訪(fǎng)問(wèn)權(quán)限
在 Java 里,可以將一個(gè)大型項(xiàng)目中的類(lèi)分別獨(dú)立出來(lái),分門(mén)別類(lèi)地存到文件里, 再將這些文件一起編譯執(zhí)行,如此的程序代碼將更易于維護(hù)。下面內(nèi)容由小編為大家介紹Java編程里的包及訪(fǎng)問(wèn)權(quán)限,供大家參考!
一、包(package)的基本概念
當(dāng)一個(gè)大型程序由數(shù)個(gè)不同的組別或人員開(kāi)發(fā)共同開(kāi)發(fā)時(shí),用到相同的類(lèi)名稱(chēng)是 很有可能的事。如果這種情況發(fā)生,還要確保程序可以正確運(yùn)行,就必須通過(guò) package 關(guān)鍵字來(lái)幫忙了。
package 是在使用多個(gè)類(lèi)或接口時(shí),為了避免名稱(chēng)重復(fù)而采用的一種措施。那么 具體應(yīng)該怎么使用呢?在類(lèi)或接口的最上面一行加上 package 的聲明就可以了。
【 格式1 package 的聲明】
package package 名稱(chēng) ;
經(jīng)過(guò) package 的聲明之后,在同一文件內(nèi)的接口或類(lèi)都被納入相同的 package 中。 程序 TestPackage1 是使用 package 的一個(gè)范例,如下所示:
范例:TestPackage1.java
01 package demo.java
02 class Person
03 {
04 public String talk()
05 {
06 return "Person —— >> talk()"
07 }
08 }
09
10 class TestPackage1
11 {
12 public static void main(String[] args)
13 {
14 System.out.println(new Person().talk())
15 }
16 }
在 TestPackage1.java 中,除了第 1 行的加的 package demo.java 聲明語(yǔ)句之外,其余的程序都是讀者見(jiàn)過(guò)的。由于第 1 行聲明了一個(gè) demo.java 的包,所以就相當(dāng)于將 Person 類(lèi)、TestPackage1 類(lèi)放入了 demo.java 文件夾之下,F(xiàn)在來(lái)看一下上面的程序是 如何編譯的:
javac -d . TestPackage1.java
“-d”:表示生成目錄
“.”:表示在當(dāng)前目錄下生成
這樣就會(huì)在當(dāng)前目錄下生成一個(gè) demo 的文件夾,在 demo 文件夾下又會(huì)生成一個(gè) java 文件夾,在此文件夾下會(huì)有編譯好的 Person.class 和 TestPackage1.class,編譯好之 后用下面的語(yǔ)法來(lái)執(zhí)行它:
java demo.java.TestPackage1
輸出結(jié)果:
Person —— >> talk()
二、import 語(yǔ)句的使用
到目前為止,所介紹的類(lèi)都是屬于同一個(gè) package 的,因此在程序代碼的編寫(xiě)上 并不需要做修改。但如果幾個(gè)類(lèi)分別屬于不同的 package 時(shí),在某個(gè)類(lèi)要訪(fǎng)問(wèn)到其它 類(lèi)的成員時(shí),則必須做下列的修改:
若某個(gè)類(lèi)需要被訪(fǎng)問(wèn)時(shí),則必須把這個(gè)類(lèi)公開(kāi)出來(lái),也就是說(shuō),此類(lèi)必須聲明成 public。
若要訪(fǎng)問(wèn)不同 package 內(nèi)某個(gè) public 類(lèi)的成員時(shí),在程序代碼內(nèi)必須明確地指明 “被訪(fǎng)問(wèn) package 的名稱(chēng).類(lèi)名稱(chēng)”。
【 格式2 package 的導(dǎo)入】
import package 名稱(chēng).類(lèi)名稱(chēng) ;
通過(guò) import 命令,可將某個(gè) package 內(nèi)的整個(gè)類(lèi)導(dǎo)入,因此后續(xù)的程序代碼便不 用再寫(xiě)上被訪(fǎng)問(wèn)package 的名稱(chēng)了。
舉一個(gè)范例來(lái)說(shuō)明 import 命令的用法。此范例與 TestPackage1 類(lèi)似,只是將兩個(gè) 類(lèi)分別放在不同的包中:
圖1 包的導(dǎo)入
范例:Person.java
01 package demo.java.a
02
03 public class Person
04 {
05 public String talk()
06 {
07 return "Person —— >> talk()"
08 }
09 }
程序說(shuō)明:
程序第 1 行聲明一個(gè) demo.java.a 的包,將 Person 類(lèi)放入此包之中。
范例:TestPackage2.java
01 package demo.java.b
02 import demo.java.a.Person
03
04 class TestPackage2
05 {
06 public static void main(String[] args)
07 {
08 System.out.println(new Person().talk())
09 }
10 }
輸出結(jié)果:
Person —— >> talk()
程序說(shuō)明:
1、 程序第 1 行聲明一個(gè) demo.java.b 包,將 TestPackage2 類(lèi)放入此包之中。
2、 程序第 2 行使用 import 語(yǔ)句,將 demo.java.a 包中的 Person 類(lèi)導(dǎo)入到此包之中。
注意: 可以將第 2 行的 import demo.java.a.Person 改成 import demo.java.a.*,表示導(dǎo) 入包中的所有類(lèi),另外需要告訴讀者的是,在 java 中有這樣的規(guī)定:導(dǎo)入全部 類(lèi)或是導(dǎo)入指定的類(lèi),對(duì)于程序的性能是沒(méi)有影響的,所以在開(kāi)發(fā)中可以直接寫(xiě) 導(dǎo)入全部類(lèi)會(huì)比較方便。
另外,TestPackage2.java 程序也可以寫(xiě)成如下形式:
范例:TestPackage3.java
01 package demo.java.b
02
03 class TestPackage3
04 {
05 public static void main(String[] args)
06 {
07 System.out.println(new demo.java.a.Person().talk())
08 }
09 }
可以發(fā)現(xiàn)在 TestPackage3.java 程序中并沒(méi)有使用 import 語(yǔ)句,但是在程序第 7 行 使用 Person 類(lèi)的時(shí)候使用了“包名.類(lèi)名”的方式使用了 Person 類(lèi),所以在程序中也 可以使用此方法來(lái)使用非本類(lèi)所在的包中的類(lèi)。
三、JDK 中常見(jiàn)的包
SUN 公司在 JDK 中為程序開(kāi)發(fā)者提供了各種實(shí)用類(lèi),這些類(lèi)按功能不同分別被 放入了不同的包中,供開(kāi)發(fā)者使用,下面簡(jiǎn)要介紹其中最常用的幾個(gè)包:
1、 java.lang — 包含一些 Java 語(yǔ)言的核心類(lèi),如 String、Math、Integer、System 和 Thread,提供常用功能。在 java.lang 包中還有一個(gè)子包:java.lang.reflect 用于實(shí)現(xiàn) java 類(lèi)的反射機(jī)制。
2、 java.awt — 包含了構(gòu)成抽象窗口工具集(abstract window toolkits)的多個(gè)類(lèi), 這些類(lèi)被用來(lái)構(gòu)建和管理應(yīng)用程序的圖形用戶(hù)界面(GUI)。
3、 javax.swing — 此包用于建立圖形用戶(hù)界面,此包中的組件相對(duì)于 java.awt 包而言是輕量級(jí)組件。
4、 java.applet — 包含 applet 運(yùn)行所需的一些類(lèi)。
5、 java.net — 包含執(zhí)行與網(wǎng)絡(luò)相關(guān)的操作的類(lèi)。
6、 java.io — 包含能提供多種輸入/輸出功能的類(lèi)。
7、 java.util — 包含一些實(shí)用工具類(lèi),如定義系統(tǒng)特性、與日期日歷相關(guān)的函數(shù)。
注意:java1.2 以后的版本中,java.lang 這個(gè)包會(huì)自動(dòng)被導(dǎo)入,對(duì)于其中的類(lèi),不 需要使用 import 語(yǔ)句來(lái)做導(dǎo)入了,如前面經(jīng)常使用的 System 類(lèi)。
【Java編程里的包及訪(fǎng)問(wèn)權(quán)限】相關(guān)文章:
理解Java訪(fǎng)問(wèn)權(quán)限的控制07-22
java編程基礎(chǔ)07-26
電腦無(wú)網(wǎng)絡(luò)訪(fǎng)問(wèn)權(quán)限怎么辦06-02
java教程之Java編程基礎(chǔ)09-12
Java編程學(xué)習(xí)示例07-31
java面向接口編程08-01
java并發(fā)編程參考10-30
java編程規(guī)范介紹07-10
java面向?qū)ο缶幊讨v解06-18