摘要:老夫的老夫的主頁謝謝閱讀那點事訪問級別修飾符注本文討論的所有情況沒有考慮嵌套類。這種訪問級別是范圍最大的,當泥萌使用該修飾符修飾類的成員的時候,代表該成員可以被所有類訪問,即整個項目下都是可以訪問的。
Java那點事-訪問級別修飾符老夫的gayhub
老夫的主頁
謝謝閱讀
注:本文討論的所有情況沒有考慮嵌套類。
Java的訪問級別修飾符(Access Level Modifiers)有四種,按照可訪問范圍的大小排列,如下表所示(雖然官方文檔也有,但是老夫知道泥萌是不會去看的_(:з)∠)_):
表格的橫行列舉的是四個訪問范圍。
修飾符 | 中文含義 | 類(class) | 包(package) | 子類(subclass) | 所有類(world) |
---|---|---|---|---|---|
public | 公有 | √ | √ | √ | √ |
protected | 保護 | √ | √ | √ | × |
無 | 缺省 | √ | √ | × | × |
private | 私有 | √ | × | × | × |
注1:缺省情況,在oracle官方文檔里也被叫做package-private,我們可以理解為包-私有。
注2:為何所有類不用All Class,因為文檔里就是這么寫的= ̄ω ̄=。
老夫簡單的介紹public、private和package-private這三種情況,重點介紹protected。
public這種訪問級別是范圍最大的,當泥萌使用該修飾符修飾類的成員的時候,代表該成員可以被所有類訪問,即整個項目下都是可以訪問的。
private與public恰好相反,它是整個訪問級別中范圍最小的,使用它修飾類的成員的時候,該成員只能夠被該類內部訪問,外部是無法訪問到的。
package-private這種情況,在泥萌沒有使用其他三種訪問級別時生效。該修飾符所控制的范圍最大是同一個包,也就是說,被修飾的成員在只需同一個包下即可被訪問。
protected這種訪問級別比較特殊,因為它還包含了子類也可以訪問的這種情況,子類這種情況分為兩種,一種是在同一個包下的子類,另一種是在不同包下的子類,這兩種情況,訪問被protected修飾的成員方式是不同的(這是本文今天的重點)。
直接來看代碼,一目了然,代碼清單如下:
項目部分包的目錄結構
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();//只能通過子類來訪問 } }
未完待續(~o( =∩ω∩= )m)
參考文檔:https://docs.oracle.com/javas...
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/70671.html
類的更多方面 本節介紹依賴于使用對象引用的類的更多方面以及你在前面的對象部分中了解到的點運算符。 從方法返回值 方法返回到調用它的代碼。 完成方法中的所有語句。 到達return語句。 或拋出異常(稍后介紹)。 以先發生者為準。 你在方法聲明中聲明方法的返回類型,在方法體內,使用return語句返回值。 聲明為void的任何方法都不返回值,它不需要包含return語句,但它可能會這樣做,在這種...
摘要:是完全面向對象的語言,對象具有狀態行為和標識。類一一是具有共同特征和行為的一類事物的統稱。受保護的,對同一包內的類和所有子類可見。一種通用的內存池,用于存放所有對象。類級變量又稱全局級變量或靜態變量,需要使用關鍵字修飾。 java語言的基本特點 java語言是面向對象的高級程序設計語言,它是編譯型的語言,Java語言不使用指針,并提供了自動的垃圾回收機制,使得程序員不必為內存管理而擔...
摘要:沒有操作符重載。最終類型在所有情況下應該是默認的,并用作為修飾符。這樣就會減少現在你會在和一些第三方的中見到的那些令人困惑的歷史遺留方法。在用過或是最新的之后你會覺得非常的繁瑣。這是最常見的關于的吐槽,但它這就是事實。 啊哈Reddit,沒了你我們還能在哪里從魚目混珠的網絡中提煉真正的精華?就在這雜亂無章的論壇中,的的確確存在著這樣一些精辟的討論。 比如有個叫Shambloroni的...
摘要:二驗證驗證主要是為了確保文件的字節流中包含的信息符合當前虛擬機的要求,并且不會危害虛擬機的自身安全。五初始化類的初始化階段是類加載過程的最后一步,該階段才真正開始執行類中定義的程序代碼或者說是字節碼。 關注我,每天三分鐘,帶你輕松掌握一個Java相關知識點。 虛擬機(JVM)經常出現在我們面試中,但是工作中卻很少遇到,導致很多同學沒有去了解過。其實除了應付面試,作為java程序員,了解...
閱讀 1107·2021-11-23 09:51
閱讀 1074·2021-10-18 13:31
閱讀 2967·2021-09-22 16:06
閱讀 4256·2021-09-10 11:19
閱讀 2196·2019-08-29 17:04
閱讀 425·2019-08-29 10:55
閱讀 2472·2019-08-26 16:37
閱讀 3369·2019-08-26 13:29