public :
所有類、所有包、所有子類都可以訪問
protect
:當前包,子類可以訪問,其他包裡的子類要看情況而定,子類例項可以訪問其從基類繼承而來的
protected
方法,而不能訪問基類例項的
protected
方法。同一包的子類,可以任意使用
同乙個包的正常類,可以直接用他的例項進行訪問
不同包的正常類,無法訪問任何屬性和方法
不同包的子類,不能使用父類例項的屬性和方法
不同包的子類,不能使用其它包的子類例項的屬性和方法
不同包的子類,可以直接使用父類的屬性和方法
總之,不同包的子類就規規矩矩的在自己的**裡用父類的屬性就行了。其它的使用都是不允許的。
default
:預設,在當前包內可見
,子類不可見
private
:只有當前類可以訪問,其他想訪問的可以通過
setting/getting
方法訪問,這個修飾符不能修飾類
修飾符
當前類
同一包內
子孫類
其他包
其他包子孫類
public y
y yy y
protected y
y yn
y/ndefault y
y nn n
private y
n nn n
介面裡的變數都隱式宣告為
public static final,
而介面裡的方法預設情況下訪問許可權為
public。
繼承與訪問控制
父類中宣告為
public
的方法在子類中也必須為
public
。父類中宣告為
protected
的方法在子類中要麼宣告為
protected
,要麼宣告為
public
,不能宣告為
private
。父類中宣告為
private
的方法,不能夠被繼承。
final
變數能被顯式地初始化並且只能初始化一次。被宣告為 final 的物件的引用不能指向不同的物件。但是 final 物件裡的資料可以被改變。也就是說 final 物件的引用不能改變,但是裡面的值可以改變。
final
修飾符通常和 static 修飾符一起使用來建立類常量。
abstract修飾符,用來建立抽象類和抽象方法:
抽象類:
抽象類不能用來例項化物件,宣告抽象類的唯一目的是為了將來對該類進行擴充。
乙個類不能同時被 abstract 和 final 修飾。如果乙個類包含抽象方法,那麼該類一定要宣告為抽象類,否則將出現編譯錯誤。
抽象方法:
抽象類可以包含抽象方法和非抽象方法。
抽象方法是一種沒有任何實現的方法,該方法的的具體實現由子類提供。
抽象方法不能被宣告成 final 和 static。
任何繼承抽象類的子類必須實現父類的所有抽象方法,除非該子類也是抽象類。
如果乙個類包含若干個抽象方法,那麼該類必須宣告為抽象類。抽象類可以不包含抽象方法。
抽象方法的宣告以分號結尾,例如:public abstract sample();。
synchronized修飾符
主要用於執行緒的程式設計。synchronized 關鍵字宣告的方法同一時間只能被乙個執行緒訪問。synchronized 修飾符可以應用於四個訪問修飾符。
volatile修飾符
volatile
修飾的成員變數在每次被執行緒訪問時,都強制從共享記憶體中重新讀取該成員變數的值。而且,當成員變數發生變化時,會強制執行緒將變化值回寫到共享記憶體。這樣在任何時刻,兩個不同的執行緒總是看到某個成員變數的同乙個值。
乙個 volatile 物件引用可能是 null。 例項
public class myrunnable implements runnable }
public void stop() }
通常情況下,在乙個執行緒呼叫 run() 方法(在 runnable 開啟的執行緒),在另乙個執行緒呼叫 stop() 方法。 如果 第一行 中緩衝區的 active 值被使用,那麼在 第二行 的 active 值為 false 時迴圈不會停止。
但是以上**中我們使用了 volatile 修飾 active,所以該迴圈會停止。
C 封裝,訪問修飾符
public 訪問修飾符允許乙個類將其成員變數和成員函式暴露給其他的函式和物件。任何公有成員可以被外部的類訪問。private 訪問修飾符允許乙個類將其成員變數和成員函式對其他的函式和物件進行隱藏。只有同乙個類中的函式可以訪問它的私有成員。即使是類的例項也不能訪問它的私有成員。protected 訪...
修飾符 許可權修飾符
四種形式許可權修飾符的訪問情況 publicprotected不寫private 同乙個類中 四種都可以 同一包中的不同類 除了private剩下都可以 不同包下的子類 public protected 可以 不同包下的不同類 只有public可以 許可權修飾符 public protected 預...
C 修飾符 類修飾符和成員修飾符
c 修飾符之類修飾符 public internal partial abstract sealed static internal 本程式集內的成員可以訪問。partial 部分類,可以將乙個類分成幾部分寫在不同檔案中,最終編譯時將合併成乙個檔案,且各個部分不能分散在不同程式集中。c 修飾符之成員...