1. Java中的訪問控制html
可見/訪問性 | 在同一類中 | 同一包中 | 不一樣包中 | 同一包子類中 | 不一樣包子類中 |
public | yes | yes | yes | yes | yes |
protected | yes | yes | no | yes | yes |
package | yes | yes | no | yes | no |
private | yes | no | no | no | no |
表1-1java
(1) 在java中有public、protected、private三種顯示的修飾符用於控制可見性,package不是顯示的修飾符,它是隱含的,即若是在類、變量等前沒加顯示的可見性修飾符,那它就是package級別的。若是在類的定義中沒有指定package,那麼java會把它放在缺省包中,通常來講這個缺省的包就是當前目錄。
(2) 在子類中的方法若是重載了父類的方法,那麼該方法的可見級別應更底或者相同,如父類中的方法是public,那麼子類中方法必須是public。
(3) 在java中,通常來講,變量成員最好是private,對它們的訪問能夠經過public的方法,在這些方法中能夠作些控制以保證數據的一致性。這些方法名通常以get和set作爲前綴。node
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引入其它包中的類和接口spa
原文地址:Java中的訪問控制public,private,protected,package做者:一根筷子code