Java(一)權限修飾符

老忘記的一些理論知識,發現這篇文章比較詳細,先保存下來,以後還會完善。
--------------------------------------------------------------------------------------------------------
允許所有外部類訪問使用public

允許子類和同包類訪問使用protected

只能自己訪問使用private

訪問權限修飾符權限從高到低排列是public  ,protected  ,friendly, private。



一個Java應用有很多類,但是有些類,並不希望被其他類使用。每個類中都有數據成員和方法成員,但是並不是每個數據和方法,都允許在其他類中調用。如何能做到訪問控制呢?就需要使用訪問權限修飾符。

Java語言中的訪問權限修飾符有4種,但是僅有3個關鍵字,因爲不寫訪問權限,在Java中被稱爲默認權限,或同包權限,本文中以(default)代替。下面按照權限從小到大的順序對4中訪問權限分別介紹。

1.私有權限(private)

private可以修飾數據成員,構造方法,方法成員,不能修飾類(此處指外部類,不考慮內部類)。

被private修飾的成員,只能在定義它們的類中使用,在其他類中不能調用。

2.默認權限(default)

類,數據成員,構造方法,方法成員,都能夠使用默認權限,即不寫任何關鍵字。

默認權限即同包權限,同包權限的元素只能在定義它們的類中,以及同包的類中被調用。

3.受保護權限(protected)

protected可以修飾數據成員,構造方法,方法成員,不能修飾類(此處指外部類,不考慮內部類)。

被protected修飾的成員,能在定義它們的類中,同包的類中被調用。如果有不同包的類想調用它們,那麼這個類必須是定義它們的類的子類。

4.公共權限(public)

public可以修飾類,數據成員,構造方法,方法成員。被public修飾的成員,可以在任何一個類中被調用,不管同包或不同包,是權限最大的一個修飾符。

 

有關Java語言的修飾符,需要注意的問題有如下幾個:

1.並不是每個修飾符都可以修飾類(指外部類),只有public和default可以。

2.所有修飾符都可以修飾數據成員,方法成員,構造方法。

3.爲了代碼安全起見,修飾符不要儘量使用權限大的,而是適用即可。比如,數據成員,如果沒有特殊需要,儘可能用private。

4.修飾符修飾的是“被訪問”的權限。

 

 

--------------------------------------------------------------------------------------------------------

類、方法、成員變量和局部變量的可用修飾符

 

修飾符

成員訪求

構造方法

成員變量

局部變量

abstract (抽象的)

static (靜態的)

public (公共的)

protected (受保護的)

 

private (私有的)

synchronized (同步的)

native (本地的)

transient (暫時的)

volatie (易失的)

final (不要改變的)

--------------------------------------------------------------------------------------------------------
<div style="background-color: rgb(255, 255, 255);"> <span style="white-space:pre">	</span><strong>Java抽象類 </strong></div><div><strong></strong><div><span style="background-color: rgb(255, 255, 153);">Java抽象類的構造方法和普通類的構造方法一樣

都是用來初始化類

只是抽象類的構造方法不能直接調用 因爲抽象類不能實現實例

但是一旦一個普通類繼承了抽象類 便也可以在構造函數中調用其抽象類的構造函數

也可以使用其方法

可以這麼理解吧 抽象類就是一個不能實例化的類

不過如果方法加了abstract那麼就必須在子類裏面重寫了</span><span style="background-color: rgb(255, 255, 255);">
</span></div><span style="background-color: rgb(255, 255, 255);">
</span></div><span style="background-color: rgb(255, 255, 255);">
</span>

--------------------------------------------------------------------------------------------------------

 的修飾符整合

一.類

類的修飾符:

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

默認

 

 

 


(十分感謝)轉自:http://blog.csdn.net/yan8024/article/details/6426451

發佈了7 篇原創文章 · 獲贊 1 · 訪問量 2萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章