摘要:老夫的老夫的主頁謝謝閱讀那點(diǎn)事訪問級別修飾符注本文討論的所有情況沒有考慮嵌套類。這種訪問級別是范圍最大的,當(dāng)泥萌使用該修飾符修飾類的成員的時候,代表該成員可以被所有類訪問,即整個項目下都是可以訪問的。
Java那點(diǎn)事-訪問級別修飾符老夫的gayhub
老夫的主頁
謝謝閱讀
注:本文討論的所有情況沒有考慮嵌套類。
Java的訪問級別修飾符(Access Level Modifiers)有四種,按照可訪問范圍的大小排列,如下表所示(雖然官方文檔也有,但是老夫知道泥萌是不會去看的_(:з)∠)_):
表格的橫行列舉的是四個訪問范圍。
修飾符 | 中文含義 | 類(class) | 包(package) | 子類(subclass) | 所有類(world) |
---|---|---|---|---|---|
public | 公有 | √ | √ | √ | √ |
protected | 保護(hù) | √ | √ | √ | × |
無 | 缺省 | √ | √ | × | × |
private | 私有 | √ | × | × | × |
注1:缺省情況,在oracle官方文檔里也被叫做package-private,我們可以理解為包-私有。
注2:為何所有類不用All Class,因?yàn)槲臋n里就是這么寫的= ̄ω ̄=。
老夫簡單的介紹public、private和package-private這三種情況,重點(diǎn)介紹protected。
public這種訪問級別是范圍最大的,當(dāng)泥萌使用該修飾符修飾類的成員的時候,代表該成員可以被所有類訪問,即整個項目下都是可以訪問的。
private與public恰好相反,它是整個訪問級別中范圍最小的,使用它修飾類的成員的時候,該成員只能夠被該類內(nèi)部訪問,外部是無法訪問到的。
package-private這種情況,在泥萌沒有使用其他三種訪問級別時生效。該修飾符所控制的范圍最大是同一個包,也就是說,被修飾的成員在只需同一個包下即可被訪問。
protected這種訪問級別比較特殊,因?yàn)樗€包含了子類也可以訪問的這種情況,子類這種情況分為兩種,一種是在同一個包下的子類,另一種是在不同包下的子類,這兩種情況,訪問被protected修飾的成員方式是不同的(這是本文今天的重點(diǎn))。
直接來看代碼,一目了然,代碼清單如下:
項目部分包的目錄結(jié)構(gòu)
parent.java
package com.smallclover.pack1; public class Parent { protected void parent() { } }
Child.java(與父類在同一個包下)
package com.smallclover.pack1; public class Child extends Parent{ public void child() { Parent p = new Parent(); p.parent();//通過父類來訪問 Child c = new Child(); c.parent();//通過子類來訪問 } }
Child.java(與父類在不同包下)
package com.smallclover.pack2; import com.smallclover.pack1.Parent; public class Child extends Parent{ public void child() { Child c = new Child(); c.parent();//只能通過子類來訪問 } }
未完待續(xù)(~o( =∩ω∩= )m)
參考文檔:https://docs.oracle.com/javas...
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://m.hztianpu.com/yun/70671.html
類的更多方面 本節(jié)介紹依賴于使用對象引用的類的更多方面以及你在前面的對象部分中了解到的點(diǎn)運(yùn)算符。 從方法返回值 方法返回到調(diào)用它的代碼。 完成方法中的所有語句。 到達(dá)return語句。 或拋出異常(稍后介紹)。 以先發(fā)生者為準(zhǔn)。 你在方法聲明中聲明方法的返回類型,在方法體內(nèi),使用return語句返回值。 聲明為void的任何方法都不返回值,它不需要包含return語句,但它可能會這樣做,在這種...
摘要:格式子類名父類名好處提高了代碼的復(fù)用性提高了代碼的維護(hù)性通過少量的修改,滿足不斷變化的具體要求讓類與類產(chǎn)生了一個關(guān)系,是多態(tài)的前提要求有共同的屬性或操作有細(xì)微的差別繼承的弊端讓類的耦合性增強(qiáng)。 showImg(https://segmentfault.com/img/remote/1460000019321816?w=600&h=242); 第二階段 JAVA面向?qū)ο?第二章 繼承 其...
摘要:是完全面向?qū)ο蟮恼Z言,對象具有狀態(tài)行為和標(biāo)識。類一一是具有共同特征和行為的一類事物的統(tǒng)稱。受保護(hù)的,對同一包內(nèi)的類和所有子類可見。一種通用的內(nèi)存池,用于存放所有對象。類級變量又稱全局級變量或靜態(tài)變量,需要使用關(guān)鍵字修飾。 java語言的基本特點(diǎn) java語言是面向?qū)ο蟮母呒壋绦蛟O(shè)計語言,它是編譯型的語言,Java語言不使用指針,并提供了自動的垃圾回收機(jī)制,使得程序員不必為內(nèi)存管理而擔(dān)...
摘要:沒有操作符重載。最終類型在所有情況下應(yīng)該是默認(rèn)的,并用作為修飾符。這樣就會減少現(xiàn)在你會在和一些第三方的中見到的那些令人困惑的歷史遺留方法。在用過或是最新的之后你會覺得非常的繁瑣。這是最常見的關(guān)于的吐槽,但它這就是事實(shí)。 啊哈Reddit,沒了你我們還能在哪里從魚目混珠的網(wǎng)絡(luò)中提煉真正的精華?就在這雜亂無章的論壇中,的的確確存在著這樣一些精辟的討論。 比如有個叫Shambloroni的...
摘要:二驗(yàn)證驗(yàn)證主要是為了確保文件的字節(jié)流中包含的信息符合當(dāng)前虛擬機(jī)的要求,并且不會危害虛擬機(jī)的自身安全。五初始化類的初始化階段是類加載過程的最后一步,該階段才真正開始執(zhí)行類中定義的程序代碼或者說是字節(jié)碼。 關(guān)注我,每天三分鐘,帶你輕松掌握一個Java相關(guān)知識點(diǎn)。 虛擬機(jī)(JVM)經(jīng)常出現(xiàn)在我們面試中,但是工作中卻很少遇到,導(dǎo)致很多同學(xué)沒有去了解過。其實(shí)除了應(yīng)付面試,作為java程序員,了解...
閱讀 1160·2021-11-23 09:51
閱讀 1139·2021-10-18 13:31
閱讀 3111·2021-09-22 16:06
閱讀 4424·2021-09-10 11:19
閱讀 2258·2019-08-29 17:04
閱讀 498·2019-08-29 10:55
閱讀 2608·2019-08-26 16:37
閱讀 3450·2019-08-26 13:29