欲先善其事,必先利其器。想要用好Java修飾符,必須要掌握好所有的Java修飾符,知道它們的定義和用法。
首先,我們需要了解什么是修飾符,修飾符實(shí)際上是一個(gè)廣義的概念,修飾符是用于限定類型以及類型成員的聲明的一種符號(hào),在各種編程語言中都有所體現(xiàn)。下面為大家介紹Java中的修飾符:
下面是類、方法、成員變量和局部變量的可用修飾符的表格,我們可以針對(duì)性的對(duì)幾個(gè)重要的Java修飾符進(jìn)行講解。
1、訪問控制修飾符:
Java語言采用訪問控制修飾符來控制類及類的方法和變量的訪問權(quán)限,從而只向使用者暴露接口,但隱藏實(shí)現(xiàn)細(xì)節(jié)。
公開級(jí)別:用public修飾,對(duì)外公開
受保護(hù)級(jí)別:用protected修飾,向子類及同一個(gè)包中的類公開
默認(rèn)級(jí)別:沒有訪問控制修飾符,向同一個(gè)包中的類公開
私有級(jí)別:用private修飾,只有 類本身可以訪問,不對(duì)外公開
頂層類只有默認(rèn)或公開級(jí)別,因此不能用private和protected來修飾。
2、abstract修飾符:
用來修飾類和成員方法,抽象類不能被實(shí)例化,抽象方法不提供具體的實(shí)現(xiàn)。
抽象類中可以沒有抽象方法,但包含了抽象方法的類必須被定義為抽象類
如果子類沒有實(shí)現(xiàn)父類中所有的抽象方法,那么子類也必須被定義為抽象類
沒有抽象構(gòu)造方法,也沒有抽象靜態(tài)方法
抽象類中可以有非抽象的構(gòu)造方法,創(chuàng)建子類的實(shí)例時(shí)可能會(huì)調(diào)用這些構(gòu)造方法
抽象類及抽象方法不能被final修飾符修飾(原因?)
3、final修飾符:
具有“不可更改的”意義,它可以修飾非抽象類飛、非抽象成員方法和變量。
用final修飾的類不能被繼承,沒有子類
用final修飾的方法不能被子類的方法覆蓋
用final修飾的變量表示常量,只能被賦一次值
final不能用來修飾構(gòu)造方法,無意義(為什么?)
final類:
不是專門繼承而設(shè)計(jì)的類
出于安全的原因,類的實(shí)現(xiàn)細(xì)節(jié)不允許有任何改動(dòng)
在創(chuàng)建對(duì)象模型時(shí),確信這個(gè)類不會(huì)再被擴(kuò)展
final方法:
出于安全的原因,父類不允許子類覆蓋某個(gè)方法,此時(shí)可以把這個(gè)方法聲明為final
final變量特征:
可以修飾靜態(tài)變量,實(shí)例變量和局部變量,分別表示靜態(tài)常量,實(shí)例常量和局部常量
final變量都必須顯示初始化
final變量只能賦一次值
如果將引用類型的變量用final修飾,那么該變量只能始終只能引用一個(gè)對(duì)象,但可以改變內(nèi)容
final定義常量,有如下作用:
提高程序的安全性,禁止非法修改取值固定且不允許改變的數(shù)據(jù)
提高程序代碼的可維護(hù)性
提高程序代碼的可讀性
4、static修飾符:
用static修飾的變量表示靜態(tài)變量,可以直接通過類名來訪問。
用static修飾的成員方法表示靜態(tài)方法,可以直接通過類名來訪問。
用static修飾的程序代碼塊表示靜態(tài)代碼塊,當(dāng)Java虛擬機(jī)加載類時(shí),就會(huì)執(zhí)行該快代碼
static變量:
靜態(tài)變量在內(nèi)存中只有一個(gè)拷貝
對(duì)于實(shí)例變量每創(chuàng)建一個(gè)實(shí)例,就分配一次內(nèi)存;而且互不影響
靜態(tài)變量能被類的所有實(shí)例共享,可作為實(shí)例之間進(jìn)行交流的共享數(shù)據(jù)
static方法(why)
靜態(tài)方法中不能用this關(guān)鍵字,也不能直接訪問所屬類的實(shí)例變量和實(shí)例方法
可以直接訪問所屬類的靜態(tài)變量和靜態(tài)方法
靜態(tài)方法中也不能用super關(guān)鍵字
一個(gè)靜態(tài)的方法不能被定義為抽象方法,必須實(shí)現(xiàn)
static代碼塊
類中也可以包含靜態(tài)代碼塊,它不存在于任何方法體中。
Java虛擬機(jī)加載類時(shí)會(huì)執(zhí)行這些靜態(tài)代碼塊。類的構(gòu)造方法用于初始化類的實(shí)例,而類的靜態(tài)代碼塊則可用于初始化類。
靜態(tài)代碼塊與靜態(tài)方法一樣,也不能直接訪問類的實(shí)例變量和實(shí)例方法,而必須通過實(shí)例的引用來訪問
以上就是對(duì)常用的Java修飾符的介紹,Java修飾符存在的意義正如它的名字一樣,是用于限定和修飾類型以及類型成員的??赐炅吮疚模覀儜?yīng)該也掌握了幾種常用的Java修飾符的用法,想要學(xué)習(xí)更多的Java基礎(chǔ)知識(shí),觀看本站的Java零基礎(chǔ)教程,長(zhǎng)沙一度軟件培訓(xùn)是你的不二選擇!