Java中的訪問控制public,private,protected,package

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

相關文章
相關標籤/搜索