Java中的private、protected、public和default的區(qū)別(詳解)
(1)對(duì)于public修飾符,它具有最大的訪問(wèn)權(quán)限,可以訪問(wèn)任何一個(gè)在CLASSPATH下的類(lèi)、接口、異常等。它往往用于對(duì)外的情況,也就是對(duì)象或類(lèi)對(duì)外的一種接口的形式。
(2)對(duì)于protected修飾符,它主要的作用就是用來(lái)保護(hù)子類(lèi)的。它的含義在于子類(lèi)可以用它修飾的成員,其他的不可以,它相當(dāng)于傳遞給子類(lèi)的一種繼承的東西。
(3)對(duì)于default來(lái)說(shuō),有點(diǎn)的時(shí)候也成為friendly(友員),它是針對(duì)本包訪問(wèn)而設(shè)計(jì)的,任何處于本包下的類(lèi)、接口、異常等,都可以相互訪問(wèn),即使是父類(lèi)沒(méi)有用protected修飾的成員也可以。
(4)對(duì)于private來(lái)說(shuō),它的訪問(wèn)權(quán)限僅限于類(lèi)的內(nèi)部,是一種封裝的體現(xiàn),例如,大多數(shù)的成員變量都是修飾符為private的,它們不希望被其他任何外部的類(lèi)訪問(wèn)。
下表為Java訪問(wèn)控制符的含義和使用情況
| 類(lèi)內(nèi)部 | 本包 | 子類(lèi) | 外部包 | |
| public | √ | √ | √ | √ |
| protected | √ | √ | √ | × |
| default | √ | √ | × | × |
| private | √ | × | × | × |
注意:Java的訪問(wèn)控制是停留在編譯層的,也就是它不會(huì)在.class文件中留下任何的痕跡,只在編譯的時(shí)候進(jìn)行訪問(wèn)控制的檢查。其實(shí),通過(guò)反射的手段,是可以訪問(wèn)任何包下任何類(lèi)中的成員,例如,訪問(wèn)類(lèi)的私有成員也是可能的。
區(qū)別:
(1)public:可以被所有其他類(lèi)所訪問(wèn)。
(2)private:只能被自己訪問(wèn)和修改。
(3)protected:自身,子類(lèi)及同一個(gè)包中類(lèi)可以訪問(wèn)。
(4)default(默認(rèn)):同一包中的類(lèi)可以訪問(wèn),聲明時(shí)沒(méi)有加修飾符,認(rèn)為是friendly。
以上就是小編為大家?guī)?lái)的Java中的private、protected、public和default的區(qū)別(詳解)全部?jī)?nèi)容了,希望大家多多支持腳本之家~
相關(guān)文章
Idea 同一窗口導(dǎo)入多個(gè)項(xiàng)目的實(shí)現(xiàn)步驟
本文主要介紹了Idea 同一窗口導(dǎo)入多個(gè)項(xiàng)目的實(shí)現(xiàn)步驟,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2023-07-07
Spring?Cloud?Ribbon?負(fù)載均衡使用策略示例詳解
Spring?Cloud?Ribbon?是基于Netflix?Ribbon?實(shí)現(xiàn)的一套客戶端負(fù)載均衡工具,Ribbon客戶端組件提供了一系列的完善的配置,如超時(shí),重試等,這篇文章主要介紹了Spring?Cloud?Ribbon?負(fù)載均衡使用策略示例詳解,需要的朋友可以參考下2023-03-03
SpringBoot集成ElaticJob定時(shí)器的實(shí)現(xiàn)代碼
這篇文章主要介紹了SpringBoot集成ElaticJob定時(shí)器的實(shí)現(xiàn)代碼,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2018-06-06
實(shí)例解析觀察者模式及其在Java設(shè)計(jì)模式開(kāi)發(fā)中的運(yùn)用
觀察者模式定義了一種一對(duì)多的依賴關(guān)系,讓多個(gè)觀察者對(duì)象同時(shí)監(jiān)聽(tīng)某一個(gè)主題對(duì)象,這個(gè)主題對(duì)象在狀態(tài)上發(fā)生變化時(shí),會(huì)通知所有觀察者對(duì)象,使它們能夠自動(dòng)更新自己.下面就以實(shí)例解析觀察者模式及其在Java設(shè)計(jì)模式開(kāi)發(fā)中的運(yùn)用2016-05-05
使用Java增刪改查數(shù)據(jù)庫(kù)的操作方法
這篇文章主要介紹了使用Java增刪改查數(shù)據(jù)庫(kù)的操作方法,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),感興趣的朋友跟隨小編一起看看吧2024-12-12
SpringBoot實(shí)現(xiàn)簡(jiǎn)單的日志鏈路追蹤
隨著分布式應(yīng)用的普及,現(xiàn)在的一些應(yīng)用系統(tǒng)不再像以前,所有的文件(前后端程序)都打包在一個(gè)包中,本文通過(guò)一個(gè)簡(jiǎn)單的SpringBoot應(yīng)用來(lái)總結(jié),我們?nèi)绾螌⑷罩敬?lián)起來(lái),文中有詳細(xì)的代碼示例,需要的朋友可以參考下2023-10-10

