Java類的訪問(wèn)權(quán)限關(guān)鍵字用法說(shuō)明
Java中提供了三個(gè)關(guān)鍵字在類的內(nèi)部設(shè)置邊界,控制類的訪問(wèn)權(quán)限,分別是:public、protected、private。這些訪問(wèn)的指定詞決定了緊跟其后的被定義的東西可以被誰(shuí)使用。
public:表示其后的元素對(duì)任何人都可以使用。
private:表示其后的元素除了類型的創(chuàng)建者和內(nèi)部的方法之外任何人都不能訪問(wèn)。
protected:與private相當(dāng),差別在于繼承的類可以訪問(wèn)protected修飾的元素,同包中的其他類元素也可以訪問(wèn)。
Java還有一種默認(rèn)的訪問(wèn)權(quán)限,在不指定任何關(guān)鍵字的情況下,這種權(quán)限將發(fā)揮作用,它是一種包的訪問(wèn)權(quán)限,即在當(dāng)前包中的任何元素可以訪問(wèn)。
訪問(wèn)權(quán)限控制的作用:
1、讓客戶端程序員無(wú)法觸及他們不應(yīng)該觸及的一部分?jǐn)?shù)據(jù)——這些數(shù)據(jù)對(duì)于數(shù)據(jù)類型的內(nèi)部操作是必須的,但并不是解決特定問(wèn)題所需接口的一部分。隱藏一些實(shí)現(xiàn)的細(xì)節(jié)對(duì)于保護(hù)數(shù)據(jù)類型內(nèi)部脆弱的部分,提高程序的安全性和可用性也是必須的。
2、允許類庫(kù)的設(shè)計(jì)者改變其內(nèi)部的工作方式而不影響客戶端程序員。在設(shè)計(jì)者有更加優(yōu)化的代碼設(shè)計(jì)方式的時(shí)候可以隨時(shí)改變類的內(nèi)部結(jié)構(gòu),而這些對(duì)于客戶端程序員都是不可見(jiàn)的,他們也無(wú)需關(guān)心類的實(shí)現(xiàn)細(xì)節(jié)。
——來(lái)自《Java編程思想》
補(bǔ)充知識(shí):JAVA 中的權(quán)限訪問(wèn)修飾符(public,protected,default,private )
JAVA中有四個(gè)權(quán)限訪問(wèn)修飾符:public,protected,default,private
注意:這里講的是對(duì)類中屬性和方法的訪問(wèn)權(quán)限,并不是類的訪問(wèn)權(quán)限
1.default:包訪問(wèn)權(quán)限
如果什么也沒(méi)寫(xiě),默認(rèn)為default。當(dāng)然也可以顯式得給出default權(quán)限
default修飾的屬性和方法,包中的所有其他類對(duì)那個(gè)成員都有訪問(wèn)權(quán)限,但是對(duì)于這個(gè)包之外的所有類沒(méi)有訪問(wèn)權(quán)限。
2.public: 接口訪問(wèn)權(quán)限
public修飾的屬性和方法對(duì)每個(gè)類都是可見(jiàn)的
3.private:類內(nèi)訪問(wèn)權(quán)限
private和public相對(duì),private修飾的屬性和方法即除類本身外,其他類都不能訪問(wèn)。
4.protected:繼承訪問(wèn)權(quán)限
首先,protected提供包訪問(wèn)權(quán)限。換句話說(shuō),如果兩個(gè)類在同一個(gè)包內(nèi),對(duì)調(diào)用者所在的類來(lái)說(shuō),default和protected提供的訪問(wèn)權(quán)限相同。
如果不在一個(gè)包,protected提供了繼承訪問(wèn)權(quán)限,即子類可以訪問(wèn)父類中被protected修飾的屬性和方法。
他們關(guān)系如下:
類內(nèi) | 繼承 | 包內(nèi) | 其他所有 | |
public | 是 | 是 | 是 | 是 |
protected | 是 | 是 | 是 | 否 |
default | 是 | 是 | 否 | 否 |
private | 是 | 否 | 否 | 否 |
以上這篇Java類的訪問(wèn)權(quán)限關(guān)鍵字用法說(shuō)明就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
SpringBoot+MySQL實(shí)現(xiàn)讀寫(xiě)分離的多種具體方案
在高并發(fā)和大數(shù)據(jù)量的場(chǎng)景下,數(shù)據(jù)庫(kù)成為了系統(tǒng)的瓶頸。為了提高數(shù)據(jù)庫(kù)的處理能力和性能,讀寫(xiě)分離成為了一種常用的解決方案,本文將介紹在Spring?Boot項(xiàng)目中實(shí)現(xiàn)MySQL數(shù)據(jù)庫(kù)讀寫(xiě)分離的多種具體方案,需要的朋友可以參考下2023-06-06基于Java在netty中實(shí)現(xiàn)線程和CPU綁定
這篇文章主要介紹了基于Java在netty中實(shí)現(xiàn)線程和CPU綁定,文章圍繞主題的相關(guān)內(nèi)容展開(kāi)詳細(xì)介紹,具有一定的參考價(jià)值,需要的小伙伴可以參考一下2022-05-05SpringBoot普通類獲取spring容器中bean的操作
這篇文章主要介紹了SpringBoot普通類獲取spring容器中bean的操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-09-09SpringBoot實(shí)現(xiàn)緩存預(yù)熱的幾種常用方案
緩存預(yù)熱是指在 Spring Boot 項(xiàng)目啟動(dòng)時(shí),預(yù)先將數(shù)據(jù)加載到緩存系統(tǒng)(如 Redis)中的一種機(jī)制,本文給大家介紹了SpringBoot實(shí)現(xiàn)緩存預(yù)熱的幾種常用方案,并通過(guò)代碼示例講解的非常詳細(xì),需要的朋友可以參考下2024-02-02