關(guān)于Java中修飾符的總結(jié)(fina除外)
public/protected/private
public表示公開,private表示私有,protected表示保護(hù),什么都不寫表示默認(rèn)default。
方法:
public protected default private
√ √ √ √ 同一類中
√ √ √ × 同一包中
√ √ × × 子類中
√ × × × 不同包中
成員變量:
考慮的安全性和健壯性的問題,成員變量一般為私有,并對外提供一些public的方法修改成員變量,在修改的方法中對輸入進(jìn)行判斷和控制。
Private成員變量只能在類的內(nèi)部使用。Public的成員變量可以在類的外部使用。
類:
類的權(quán)限修飾符只有不加和public兩種。不加表示只有同一個(gè)包的類可以訪問,public類所有的其他類都可以訪問。
Static
意為靜態(tài),用于修飾成員變量、方法、代碼塊。
靜態(tài)成員變量
靜態(tài)成員變量隨著類的加載而加載,多個(gè)對象共享該靜態(tài)成員變量??慈缦麓a:
靜態(tài)方法
當(dāng)修飾方法的時(shí)候,這個(gè)方法隨著類的加載而加載,直接通過類名來調(diào)用。很多工具類中的方法都是靜態(tài)的,直接通過“類名.方法名”調(diào)用。不過靜態(tài)方法中不能使用非靜態(tài)成員變量和非靜態(tài)方法。
靜態(tài)代碼塊
靜態(tài)代碼塊(java的類在產(chǎn)生對象的時(shí)候,在調(diào)用構(gòu)造方法的時(shí)候,還會(huì)調(diào)用構(gòu)造代碼塊)。
請看下列代碼(證明構(gòu)造方法、構(gòu)造語句、靜態(tài)構(gòu)造語句運(yùn)行的先后順序):
需要注意的是:
(1)靜態(tài)方法不能調(diào)用非靜態(tài)方法, 靜態(tài)的方法是在構(gòu)造該類時(shí)加載的,類加載時(shí)會(huì)加載靜態(tài)的方法;此時(shí)非靜態(tài)方法還沒有加載,類初始化后才加載非靜態(tài)方法;所以靜態(tài)方法不能調(diào)用非靜態(tài)方法。通過在靜態(tài)方法的內(nèi)部創(chuàng)建對象(或形式參數(shù)來傳遞的對象)來間接訪問是完全可以的。
(2)java中的main方法必須寫成static的,因?yàn)?,在類加載時(shí)無法創(chuàng)建對象,靜態(tài)方法可以不通過對象調(diào)用。所以在類加載時(shí)就可以通過main方法入口來運(yùn)行程序。
注意:父類中是靜態(tài)方法,子類中不能覆蓋為非靜態(tài)方法。在符合覆蓋規(guī)則的前提下,在父子類中,父類中的靜態(tài)方法可以被子類中的靜態(tài)方法覆蓋,但是沒有多態(tài)。
一個(gè)類在什么時(shí)候被加載?時(shí)機(jī) (延遲加載,能不加載就不加載
(1)new 一個(gè)對象的時(shí)候,加載
這個(gè)很好理解,不解釋了。(2)沒有創(chuàng)建對象,訪問類中靜態(tài)成員(方法和屬性)
(3)聲明一個(gè)類的引用,不加載(4)創(chuàng)建子類,先加載父類,再加載子類
(5)父類中的公開靜態(tài)方法,子類繼承,使用子類的類名調(diào)用此方法,加載父類
Abstract
這個(gè)修飾符表示抽象,可以用在方法和類前面。
抽象方法表示,類應(yīng)該具備此功能,但不同的子類應(yīng)該有不同的實(shí)現(xiàn)方式,所以沒有定義具體如何做。具體如何做由子類自己實(shí)現(xiàn)。子類在實(shí)現(xiàn)所有抽象方法后才能new對象。
如有類的內(nèi)部有抽象方法,則類也必須是抽象的。抽象類不能直接new對象。抽象類中可以有非抽象方法。
以上就是小編為大家?guī)淼年P(guān)于Java中修飾符的總結(jié)(fina除外)的全部內(nèi)容了,希望對大家有所幫助,多多支持腳本之家~
相關(guān)文章
java JTree JCheckBox樹復(fù)選框詳解
這篇文章主要為大家詳細(xì)介紹了java JTree JCheckBox樹復(fù)選框的相關(guān)資料,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-11-11
IDEA神器一鍵查看Java字節(jié)碼及其他類信息插件
這篇文章主要為大家介紹了一款I(lǐng)DEA神器,可以一鍵查看Java字節(jié)碼及其他類信息,有需要的朋友可以借鑒參考下,希望能夠有所幫助2022-01-01
使用maven-archetype-plugin現(xiàn)有項(xiàng)目生成腳手架的方法
這篇文章主要介紹了使用maven-archetype-plugin現(xiàn)有項(xiàng)目生成腳手架的方法,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-11-11
Springboot中@Value注解的場景用法及可能遇到的問題詳解
這篇文章主要給大家介紹了關(guān)于Springboot中@Value注解的場景用法及可能遇到問題的相關(guān)資料, @Value通常用于注入外部化屬性,即外部配置屬性的注入,文中通過圖文介紹的非常詳細(xì),需要的朋友可以參考下2023-11-11
Java使用PDFBox實(shí)現(xiàn)調(diào)整PDF每頁格式
這篇文章主要為大家詳細(xì)介紹了Java如何使用PDFBox實(shí)現(xiàn)調(diào)整PDF每頁格式,文中的示例代碼講解詳細(xì),具有一定的借鑒價(jià)值,有需要的小伙伴可以參考下2024-03-03
jvm之java類加載機(jī)制和類加載器(ClassLoader)的用法
這篇文章主要介紹了jvm之java類加載機(jī)制和類加載器(ClassLoader)的用法,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-09-09
Java Spring Boot實(shí)現(xiàn)簡易掃碼登錄詳解
這篇文章主要為大家詳細(xì)介紹了java Spring Boot實(shí)現(xiàn)app掃碼登錄功能,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助2021-09-09

