Java中的訪問修飾符詳細(xì)解析
更新時(shí)間:2013年09月03日 10:14:27 作者:
以下是對(duì)Java中的訪問修飾符進(jìn)行了詳細(xì)的分析介紹,需要的朋友可以過來參考下
1、類的修飾符分為:可訪問控制符和非訪問控制符兩種。
可訪問控制符是:公共類修飾符 public
非訪問控制符有:抽象類修飾符 abstract ;最終類修飾符 final
1 )公共類修飾符 public : Java 語(yǔ)言中類的可訪問控制符只有一個(gè): public 即公共的。每個(gè) Java 程序的主類都必須是 public 類作為公共工具供其它類和程序使用的應(yīng)定義為 public 類。
2 )抽象類修飾符 abstract :凡是用 abstract 修飾符修飾的類,被稱為抽象類。所謂抽象類是指這種類沒有具體對(duì)象的一種概念類。這樣的類就是 Java 語(yǔ)言的 abstract 類。
3 ) 最終類修飾符 final :當(dāng)一個(gè)類不可能有子類時(shí)可用修飾符 final 把它說明為最終類。被定義為 final 的類通常是一些有固定作用、用來完成某種標(biāo)準(zhǔn)功能的類。
4 )類缺省訪問控制符:如果一個(gè)類沒有訪問控制符,說明它具有缺省的訪問控制符特性。此時(shí),這個(gè)類只能被同一個(gè)包中的類訪問或引用。這一訪問特性又稱為包訪問性。
2 .域的控制修飾符也分為:可訪問控制符和非訪問控制符兩類。
可訪問控制符有 4 種:公共訪問控制符: public ;私有訪問控制符: private ;保護(hù)訪問控制符: protected ;私有保護(hù)訪問控制符: private protected
非訪問控制符有 4 種:靜態(tài)域修飾符: static ;最終域修飾符: final ;易失 ( 共享 ) 域修飾符: volatile ;暫時(shí)性域修飾符: transient
1 )公共訪問控制符 public :用 public 修飾的域稱為公共域。如果公共域?qū)儆谝粋€(gè)公共類,則可以被所有其它類所引用。由于 public 修飾符會(huì)降低運(yùn)行的安全性和數(shù)據(jù)的封裝性,所以一般應(yīng)減少 public 域的使用。
2 )私有訪問控制符 private : 用 private 修飾的成員變量 ( 域 ) 只能被該類自身所訪問,而不能被任何其它類 ( 包括子類 ) 所引用。
3 )保護(hù)訪問控制符 protected :用 protected 修飾的成員變量可以被三種類所引用:①該類自身;②與它在同一個(gè)包中的其它類;③在其它包中的該類的子類。使用修飾符 protected 的主要作用是允許其它包中它的子類來訪問父類的特定屬性。
4 )私有保護(hù)訪問控制符 private protected :用修飾符 private protected 修飾的成員變量可以被該類本身或該類的子類兩種類訪問和引用。
5 )靜態(tài)域修飾符 static :用 static 修飾的成員變量?jī)H屬于類的變量,而不屬于任何一個(gè)具體的對(duì)象,靜態(tài)成員變量的值是保存在類的內(nèi)存區(qū)域的公共存儲(chǔ)單元,而不是保存在某一個(gè)對(duì)象的內(nèi)存區(qū)間。任何一個(gè)類的對(duì)象訪問它時(shí)取到的都是相同的數(shù)據(jù);任何一個(gè)類的對(duì)象修改它時(shí) , 也都是對(duì)同一個(gè)內(nèi)存單元進(jìn)行操作。
6 )最終域修飾符 final :最終域修飾符 final 是用來定義符號(hào)常量的。一個(gè)類的域 ( 成員變量 ) 如果被修飾符 final 說明,則它的取值在程序的整個(gè)執(zhí)行過程中都是不變的。
7 )易失 ( 共享 ) 域修飾符 volatile :易失 ( 共享 ) 域修飾符 volatile 是用來說明這個(gè)成員變量可能被幾個(gè)線程所控制和修改。也就是說在程序運(yùn)行過程中,這個(gè)成員變量有可能被其它的程序影響或改變它的取值。因此,在使用中要注意這種成員變量取值的變化。通常 volatile 用來修飾接受外部輸入的域。
8 )暫時(shí)性域修飾符 transient :暫時(shí)性域修飾符 transient 用來定義一個(gè)暫時(shí)性變量。其特點(diǎn)是:用修飾符 transient 限定的暫時(shí)性變量,將指定 Java 虛擬機(jī)認(rèn)定該暫時(shí)性變量不屬于永久狀態(tài),以實(shí)現(xiàn)不同對(duì)象的存檔功能。否則,類中所有變量都是對(duì)象的永久狀態(tài)的一部分,存儲(chǔ)對(duì)象時(shí)必須同時(shí)保存這些變量。
3 .方法的控制修飾符也分為:可訪問控制符和非訪問控制符兩類。
可訪問控制符有 4 種:公共訪問控制符: public ;私有訪問控制符: private ;保護(hù)訪問控制符: protected ;私有保護(hù)訪問控制符: private protected
非訪問控制符有 5 種:抽象方法控制符: abstract ;靜態(tài)方法控制符: static ;最終方法控制符: final ;本地方法控制符: native ;同步方法控制符: synchronized
1 )抽象方法控制符 abstract :用修飾符 abstract 修飾的方法稱為抽象方法。抽象方法是一種僅有方法頭,沒有方法體和操作實(shí)現(xiàn)的一種方法。
2 )靜態(tài)方法控制符 static :用修飾符 static 修飾的方法稱為靜態(tài)方法。靜態(tài)方法是屬于整個(gè)類的類方法;而不使用 static 修飾、限定的方法是屬于某個(gè)具體類對(duì)象的方法。 由于 static 方法是屬于整個(gè)類的,所以它不能操縱和處理屬于某個(gè)對(duì)象的成員變量,而只能處理屬于整個(gè)類的成員變量,即 static 方法只能處理 static 的域。
3 )最終方法控制符 final :用修飾符 final 修飾的方法稱為最終方法。最終方法是功能和內(nèi)部語(yǔ)句不能更改的方法,即最終方法不能重載。這樣,就固定了這個(gè)方法所具有的功能和操作,防止當(dāng)前類的子類對(duì)父類關(guān)鍵方法的錯(cuò)誤定義,保證了程序的安全性和正確性。所有被 private 修飾符限定為私有的方法,以及所有包含在 final 類 ( 最終類 ) 中的方法,都被認(rèn)為是最終方法。
4 )本地方法控制符 native :用修飾符 native 修飾的方法稱為本地方法。為了提高程序的運(yùn)行速度,需要用其它的高級(jí)語(yǔ)言書寫程序的方法體,那么該方法可定義為本地方法用修飾符 native 來修飾;
5 )同步方法控制符 synchronized :該修飾符主要用于多線程共存的程序中的協(xié)調(diào)和同步。
可訪問控制符是:公共類修飾符 public
非訪問控制符有:抽象類修飾符 abstract ;最終類修飾符 final
1 )公共類修飾符 public : Java 語(yǔ)言中類的可訪問控制符只有一個(gè): public 即公共的。每個(gè) Java 程序的主類都必須是 public 類作為公共工具供其它類和程序使用的應(yīng)定義為 public 類。
2 )抽象類修飾符 abstract :凡是用 abstract 修飾符修飾的類,被稱為抽象類。所謂抽象類是指這種類沒有具體對(duì)象的一種概念類。這樣的類就是 Java 語(yǔ)言的 abstract 類。
3 ) 最終類修飾符 final :當(dāng)一個(gè)類不可能有子類時(shí)可用修飾符 final 把它說明為最終類。被定義為 final 的類通常是一些有固定作用、用來完成某種標(biāo)準(zhǔn)功能的類。
4 )類缺省訪問控制符:如果一個(gè)類沒有訪問控制符,說明它具有缺省的訪問控制符特性。此時(shí),這個(gè)類只能被同一個(gè)包中的類訪問或引用。這一訪問特性又稱為包訪問性。
2 .域的控制修飾符也分為:可訪問控制符和非訪問控制符兩類。
可訪問控制符有 4 種:公共訪問控制符: public ;私有訪問控制符: private ;保護(hù)訪問控制符: protected ;私有保護(hù)訪問控制符: private protected
非訪問控制符有 4 種:靜態(tài)域修飾符: static ;最終域修飾符: final ;易失 ( 共享 ) 域修飾符: volatile ;暫時(shí)性域修飾符: transient
1 )公共訪問控制符 public :用 public 修飾的域稱為公共域。如果公共域?qū)儆谝粋€(gè)公共類,則可以被所有其它類所引用。由于 public 修飾符會(huì)降低運(yùn)行的安全性和數(shù)據(jù)的封裝性,所以一般應(yīng)減少 public 域的使用。
2 )私有訪問控制符 private : 用 private 修飾的成員變量 ( 域 ) 只能被該類自身所訪問,而不能被任何其它類 ( 包括子類 ) 所引用。
3 )保護(hù)訪問控制符 protected :用 protected 修飾的成員變量可以被三種類所引用:①該類自身;②與它在同一個(gè)包中的其它類;③在其它包中的該類的子類。使用修飾符 protected 的主要作用是允許其它包中它的子類來訪問父類的特定屬性。
4 )私有保護(hù)訪問控制符 private protected :用修飾符 private protected 修飾的成員變量可以被該類本身或該類的子類兩種類訪問和引用。
5 )靜態(tài)域修飾符 static :用 static 修飾的成員變量?jī)H屬于類的變量,而不屬于任何一個(gè)具體的對(duì)象,靜態(tài)成員變量的值是保存在類的內(nèi)存區(qū)域的公共存儲(chǔ)單元,而不是保存在某一個(gè)對(duì)象的內(nèi)存區(qū)間。任何一個(gè)類的對(duì)象訪問它時(shí)取到的都是相同的數(shù)據(jù);任何一個(gè)類的對(duì)象修改它時(shí) , 也都是對(duì)同一個(gè)內(nèi)存單元進(jìn)行操作。
6 )最終域修飾符 final :最終域修飾符 final 是用來定義符號(hào)常量的。一個(gè)類的域 ( 成員變量 ) 如果被修飾符 final 說明,則它的取值在程序的整個(gè)執(zhí)行過程中都是不變的。
7 )易失 ( 共享 ) 域修飾符 volatile :易失 ( 共享 ) 域修飾符 volatile 是用來說明這個(gè)成員變量可能被幾個(gè)線程所控制和修改。也就是說在程序運(yùn)行過程中,這個(gè)成員變量有可能被其它的程序影響或改變它的取值。因此,在使用中要注意這種成員變量取值的變化。通常 volatile 用來修飾接受外部輸入的域。
8 )暫時(shí)性域修飾符 transient :暫時(shí)性域修飾符 transient 用來定義一個(gè)暫時(shí)性變量。其特點(diǎn)是:用修飾符 transient 限定的暫時(shí)性變量,將指定 Java 虛擬機(jī)認(rèn)定該暫時(shí)性變量不屬于永久狀態(tài),以實(shí)現(xiàn)不同對(duì)象的存檔功能。否則,類中所有變量都是對(duì)象的永久狀態(tài)的一部分,存儲(chǔ)對(duì)象時(shí)必須同時(shí)保存這些變量。
3 .方法的控制修飾符也分為:可訪問控制符和非訪問控制符兩類。
可訪問控制符有 4 種:公共訪問控制符: public ;私有訪問控制符: private ;保護(hù)訪問控制符: protected ;私有保護(hù)訪問控制符: private protected
非訪問控制符有 5 種:抽象方法控制符: abstract ;靜態(tài)方法控制符: static ;最終方法控制符: final ;本地方法控制符: native ;同步方法控制符: synchronized
1 )抽象方法控制符 abstract :用修飾符 abstract 修飾的方法稱為抽象方法。抽象方法是一種僅有方法頭,沒有方法體和操作實(shí)現(xiàn)的一種方法。
2 )靜態(tài)方法控制符 static :用修飾符 static 修飾的方法稱為靜態(tài)方法。靜態(tài)方法是屬于整個(gè)類的類方法;而不使用 static 修飾、限定的方法是屬于某個(gè)具體類對(duì)象的方法。 由于 static 方法是屬于整個(gè)類的,所以它不能操縱和處理屬于某個(gè)對(duì)象的成員變量,而只能處理屬于整個(gè)類的成員變量,即 static 方法只能處理 static 的域。
3 )最終方法控制符 final :用修飾符 final 修飾的方法稱為最終方法。最終方法是功能和內(nèi)部語(yǔ)句不能更改的方法,即最終方法不能重載。這樣,就固定了這個(gè)方法所具有的功能和操作,防止當(dāng)前類的子類對(duì)父類關(guān)鍵方法的錯(cuò)誤定義,保證了程序的安全性和正確性。所有被 private 修飾符限定為私有的方法,以及所有包含在 final 類 ( 最終類 ) 中的方法,都被認(rèn)為是最終方法。
4 )本地方法控制符 native :用修飾符 native 修飾的方法稱為本地方法。為了提高程序的運(yùn)行速度,需要用其它的高級(jí)語(yǔ)言書寫程序的方法體,那么該方法可定義為本地方法用修飾符 native 來修飾;
5 )同步方法控制符 synchronized :該修飾符主要用于多線程共存的程序中的協(xié)調(diào)和同步。
相關(guān)文章
nodejs連接dubbo服務(wù)的java工程實(shí)現(xiàn)示例
這篇文章主要介紹了在項(xiàng)目遷移中,nodejs連接dubbo服務(wù)的java工程實(shí)現(xiàn)示例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步2022-03-03
java 將jsonarray 轉(zhuǎn)化為對(duì)應(yīng)鍵值的jsonobject方法
下面小編就為大家分享一篇java 將jsonarray 轉(zhuǎn)化為對(duì)應(yīng)鍵值的jsonobject方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2018-03-03
Java通過JNI調(diào)用C++動(dòng)態(tài)庫(kù)的完整流程詳解
JNI(Java Native Interface),是實(shí)現(xiàn)Java/Kotlin與C/C++語(yǔ)言之間交互的橋梁,本文主要為大家介紹了Java通過JNI調(diào)用C++動(dòng)態(tài)庫(kù)的完整流程,需要的可以參考下2025-04-04
SpringBoot參數(shù)校驗(yàn)的最佳實(shí)戰(zhàn)教程
開發(fā)過程中,后臺(tái)的參數(shù)校驗(yàn)是必不可少的,下面這篇文章主要給大家介紹了關(guān)于SpringBoot參數(shù)校驗(yàn)的最佳實(shí)戰(zhàn),文中通過示例代碼介紹的非常詳細(xì),需要的朋友可以參考下2021-08-08
IDEA 2020.1 搜索不到Chinese (Simplified) Language
小編在安裝中文插件時(shí)遇到IDEA 2020.1 搜索不到Chinese ​(Simplified)​ Language Pack EAP,無法安裝的問題,本文給大家分享我的解決方法,感興趣的朋友一起看看吧2020-04-04
使用Postman自動(dòng)生成Cookie并轉(zhuǎn)換為Java代碼的實(shí)現(xiàn)
在接口測(cè)試中,有時(shí)候需要在請(qǐng)求中攜帶Cookie信息,為了方便測(cè)試,我們可以使用Postman來自動(dòng)生成Cookie,并將其轉(zhuǎn)換為Java代碼,以便在自動(dòng)化測(cè)試中使用,下面將介紹如何實(shí)現(xiàn)這一功能,需要的朋友可以參考下2024-11-11
使用java實(shí)現(xiàn)Xmodem協(xié)議
這篇文章主要介紹了使用java實(shí)現(xiàn)Xmodem協(xié)議的相關(guān)資料,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2016-12-12

