Java中共有四種通路限制修飾符:private,public,protected,friendly
friendly是預設的,而且不是Java中的關鍵字.
private:私有,内部通路,很好了解
public:共有,都可以通路,更加好了解
friendly:同一個包可以通路
protected:同一個包或者子類可以通路
如果我隻想讓子類通路的話就無能為力了(protected減去friendly),這種情況是很普遍的,在父類中定義的方法我可能隻想讓子類調用,就像Object中定義的clone方法就隻是給子類調用的,因為Object是根類,當然所有類都是他的子類,這個沒有什麼問題.
修飾符
類
成員訪求
構造方法
成員變量
局部變量
abstract(抽象的)
√
√
-
-
-
static (靜态的)
-
√
-
√
-
public(公共的)
√
√
√
√
-
protected(受保護的)
√
√
√
-
private(私有的)
-
√
√
√
-
synchronized(同步的)
-
√
-
-
-
native(本地的)
-
√
-
-
-
transient(暫時的)
-
-
-
√
-
volatie(易失的)
-
-
-
√
-
final(不要改變的)
√
√
-
√
√
類 修飾符
Public
可以從其他類中通路
Abstract
本類不能被執行個體化
Final
不能再聲明子類
構造函數修飾符
Public
可以從所有的類中通路
Protected
隻能從自己的類和它的子類中通路
Private
隻能在本類中通路
域/成員變量修飾符
Public
可以從所有的類中通路
Protected
隻能從本類和它的子類中通路
Private
隻能從本類中通路它
Static
對該類的所有執行個體隻能有一個域值存在
transient
不是一個對象持久狀态的一部份
Volatile
可以被異步的線程所修改
final
必須對它賦予初值并且不能修改它
局部變量 修飾符
final
必須對它賦予初值并且不能修改它
方法修飾符
Public
可以從所有的類中通路它
Protected
隻能從本類及其子類中通路它
Private
隻能從本類中通路它
abstract
沒有方法體,屬于一個抽象類
final
子類不能覆寫它
static
被綁定于類本身而不是類的執行個體
native
該方法由其他程式設計語言實作
asnchronized
在一個線程調用它之前必須先給它加
類的修飾符整合
一.類
類的修飾符:
Public:可以在其他任何類中使用,預設為統一包下的任意類。
Abstract:抽象類,不能被執行個體化,可以包含抽象方法,抽象方法沒有被實作,無具體功能,隻能衍生子類。
Final:不能被繼承。
二.變量
變量修飾符:
一個類的成員變量的聲明必須在類體中,而不能在方法中,方法中聲明的是局部變量。
1. 可通路修飾符:
2. static:類變量:一個類所擁有的變量,不是類的每個執行個體有的變量。類變量是指不管類建立了多少對象,系統僅在第一次調用類的時候為類變量配置設定記憶體,所有對象共享該類的類變量,是以可以通過類本身或者某個對象來通路類變量。
3. final:常量。
4. volatile:聲明一個可能同時被并存運作的幾個線程所控制和修改的變量。
執行個體變量:和類變量對應,即每個對象都擁有各自獨立的執行個體變量。
三.方法:(和變量對象分為執行個體方法和類方法,并用有無static修飾差別)
類方法:使用static關鍵字說明的方法
1.第一次調用含類方法的類是,系統隻為該類建立一個版本,這個版本被該類和該類的所有執行個體共享。
2.類方法隻能操作類變量,不能通路執行個體變量。類方法可以在類中被調用,不必建立執行個體來調用,當然也可以通過對象來調用。
執行個體方法:執行個體方法可以對目前對象的執行個體變量操作,而且可以通路類變量。
方法可以重載,要求:方法名相同,但是參數必須有差別。(參數不同可以使類型不同,順序不同,個數不同)
方法的傳回類型:若無傳回類型,則聲明為void.
方法中的變量作用域:
1. 成員變量:整個類。
2. 局部變量:定義起到方法塊結束為止。
3. 方法參數:整個方法或者構造方法。
4. 異常處理參數:參數傳遞給異常處理方法。
構造方法:和類同名的方法。為建立對象開辟記憶體空間後,用于初始化建立的對象。不能用對象顯式的調用。
靜态初始化器:格式:static{}
靜态初始化器與構造方法的差別:
靜态初始化器
構造方法
對類的靜态域初始化
對建立的對象初始化
類進入記憶體後,系統調用執行
執行new後自動執行
屬特殊語句(僅執行一次)
屬特殊方法
方法的修飾符:
抽象方法:用abstract修飾,隻有聲明部分,方法體為空,具體在子類中完成。
類方法:靜态方法,用static修飾,
1. 調用時,使用類名作為字首,而不是類的某個執行個體對象名
2. 不能被單獨對象擁有,屬于整個類共享。
3. 不能處理成員變量。
最終方法:用final修飾,不能被子類重新定義的方法。
本地方法:用native修飾的方法,表示用其他語言書寫的特殊方法,包括C,C ,FORTRAN,彙編語言等。
四.類成員的通路控制符:
即類的方法和成員變量的通路控制符,一個類作為整體對象不可見,并不代表他的所有域和方法也對程式其他部分不可見,需要有他們的通路修飾符判斷。
權限如下:
通路修飾符
同一個類
同包
不同包,子類
不同包,非子類
private
√
protected
√
√
√
public
√
√
√
√
預設
√
√