Java學習——public,private,protected等修飾符的區別

來源:互聯網
上載者:User

標籤:

public、private、protecte、default是Java裡用來定義成員的存取權限的,也就是在成員前不加任何許可權修飾符。如:
public   class   A{
    void   method(){};
}
method就屬於default許可權。 

 

這四個修飾符的存取權限如下表:
-----------------------------------------------
                        類內部     package內       子類         其他
public             允許         允許                 允許         允許
protected       允許         允許                 允許         不允許
default           允許         允許                 不允許     不允許
private           允許         不允許             不允許     不允許
----------------------------------------------- 

 

Java中存取修飾詞public、private、protecte、default的意義講解:
public(介面存取權限): Java語言中訪問限制最寬的修飾符,一般稱之為“公用的”。被其修飾的類、屬性以及方法不僅可以跨類訪問,而且允許跨包(package)訪問。
private(你無法訪問): Java語言中對存取權限限制的最窄的修飾符,一般稱之為“私人的”。被其修飾的類、屬性以及方法只能被該類的對象訪問,其子類不能訪問,更不能允許跨包訪問。
protected(繼承存取權限): 介於public 和 private 之間的一種存取修飾詞,一般稱之為“保護形”。被其修飾的類、屬性以及方法只能被類本身的方法及子類訪問,即使子類在不同的包中也可以訪問。
default(包存取權限):即不加任何存取修飾詞,通常稱為“預設訪問模式“。該模式下,只允許在同一個包中進行訪問。 
(只限在Java語言中……)

 

Java語言定義了public、protected、private、abstract、static和final這6常用修飾
詞外還定義了5個不太常用的修飾詞,下面是對這11個Java修飾詞的介紹:
1.public
使用對象:類、介面、成員
介紹:無論它所處在的包定義在哪,該類(介面、成員)都是可訪問的
2.private
使用對象:成員
介紹:成員只可以在定義它的類中被訪問
3.static
使用對象:類、方法、欄位、初始化函數
介紹:成名為static的內部類是一個頂級類,它和包含類的成員是不相關的。靜態方法
是類方法,
是被指向到所屬的類而不是類的執行個體。靜態欄位是類欄位,無論該欄位所在的類建立了
多少執行個體,該字
段只存在一個執行個體被指向到所屬的類而不是類的執行個體。初始化函數是在裝載類時執行
的,而不是在建立
執行個體時執行的。
4.final
使用對象:類、方法、欄位、變數
介紹:被定義成final的類不允許出現子類,不能被覆蓋(不應用於動態查詢),欄位值
不允許被
修改。
5.abstract
使用對象:類、介面、方法
介紹:類中包括沒有實現的方法,不能被執行個體化。如果是一個abstract方法,則方法體
為空白,該方
法的實現在子類中被定義,並且包含一個abstract方法的類必須是一個abstract類
6.protected
使用對象:成員
介紹:成員只能在定義它的包中被訪問,如果在其他包中被訪問,則實現這個方法的類
必須是該成
員所屬類的子類。
7.native
使用對象:成員
介紹:與操作平台相關,定義時並不定義其方法,方法的實現被一個外部的庫實現。
8.strictfp
使用對象:類、方法
介紹:strictfp修飾的類中所有的方法都隱藏了strictfp修飾詞,方法執行的所有浮點
計算遵守
IEEE   754標準,所有取值包括中間的結果都必須表示為float或double類型,而不能利用
由本地平台浮
點格式或硬體提供的額外精度或表示範圍。
9.synchronized
使用對象:方法
介紹:對於一個靜態方法,在執行之前jvm把它所在的類鎖定;對於一個非靜態類的方
法,執行
前把某個特定對象執行個體鎖定。
10.volatile
使用對象:欄位
介紹:因為非同步線程可以訪問欄位,所以有些最佳化操作是一定不能作用在欄位上的。
volatile有時
可以代替synchronized。
11.transient
使用對象:欄位
介紹:欄位不是對象持久狀態的一部分,不應該把欄位和對象一起串起。

Java學習——public,private,protected等修飾符的區別

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.