Java入門筆記 4 訪問控制和包

1. Java中的訪問控制
表1-1

可見/訪問性
public
protected
package
private

在同一類中
yes
yes
yes
Yes

同一包中
yes
yes
yes
no

不同包中
yes
No
No
No

同一包的子類中
yes
yes
yes
No

不同包的子類中
Yes
Yes
No
No


說明:

(1) 在java中有public、protected、private三種顯示的修飾符用於控制可見性,package不是顯示的修飾符,它是隱含的,即如果在類、變量等前沒加顯示的可見性修飾符,那它就是package級別的。如果在類的定義中沒有指定package,那麼java會把它放在缺省包中,一般來說這個缺省的包就是當前目錄。

(2) 在子類中的方法如果重載了父類的方法,那麼該方法的可見級別應更底或者相同,如父類中的方法是public,那麼子類中方法必須是public。

(3) 在java中,一般來說,變量成員最好是private,對它們的訪問可以通過public的方法,在這些方法中可以做些控制以保證數據的一致性。這些方法名一般以get和set做爲前綴。

2. 包
包名一般爲小寫,而類名的第一個字母一般爲大寫,這樣在引用時,可以明顯的分辨出包名和類名。如果在類的定義之前沒有使用package定義包名,那麼該類就屬於缺省的包。

2.1 Hello Package
首先通過一個簡單的package的定義來學習package的使用:

package testPackage;

public class Test

{

public static void main(String args[])

{

mNode node = new mNode();

node.print("hello");

}

}

說明:

(1) 使用package關鍵字指明類所在的包;

(2) package語句必須在文件的最前面;

(3) 編譯時可使用javac –d . Test.java自動產生包需要目錄;

(4) 可以使用java testPackage.Test來執行編譯後的代碼;

2.2 包的幾個作用:
(1) 可以更好的組織類,包與文件夾類似,文件夾可以將不同的文件放在同一個文件夾中,而包也可以將不同的類文件放在同一包中;

(2) 減少類名的衝突問題,這也與文件夾類似,同一文件夾中的文件不能重名,不同文件中的文件可以重名,同一包中的類名不能重複,不同包中的類名可以重複;

(3) 對包中的類起了一定的保護作用,詳見java的訪問控制;

2.3 import的使用
(1) 直接引用指定的類,如import java.util.Vector;

(2) 引用一個包中的多個類,如import java.awt.*。更確切的說,它並不是引用java.awt中的所有類,而只引用定義爲public的類,並且只引用被代碼引用的類,所以這種引用方法並不會降低程序的性能;

(3) *號代替類名,在不能代替包名,如import java.awt.*,只引用java.awt下的類,而不引用java.awt下的包;

(4) import java.awt.F*,這種使用方法是錯誤的;

(5) import語句在所有類定義之前,在package定義之後;

(6) import只告訴編譯器及解釋器哪裏可以找到類、變量、方法的定義,而並沒有將這些定義引入代碼中;

2.4 包中類的使用
有以下幾種機制可以使用包中的類:

(1) 如果要使用的類是屬於java.lang包的,那麼可以直接使用類名來引用指定的類,而不需要加上包名,因爲包java.lang不用顯示使用import,它是缺省引入的;

(2) 如果要使用的類在其它包(java.lang除外)中,那麼可以通過包名加上類名來引用該類,如java.awt.Font

(3) 對於經常要使用的類(該類在其它包中),那麼最好使用import引用指定的包,如java.awt.*

(4) 如果import引入的不同的包中包含有相同的類名,那麼這些類的使用必須加上包名

(5) 接口也可以屬於某個包,也可以使用import引入其它包中的類和接口  
發佈了9 篇原創文章 · 獲贊 0 · 訪問量 6萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章