java中的修飾符分為類修飾符,字段修飾符,方法修飾符。根據(jù)功能的不同,主要分為以下五種。
1、權(quán)限訪問(wèn)修飾符
public,protected,default,private,這四種級(jí)別的修飾符都可以用來(lái)修飾類、方法和字段。
2、final修飾符
final的意思是不可變,他可以修飾類、字段、方法。修飾類后類不能被擴(kuò)展(extends),也就是不能被繼承。修飾字段后字段的值不能被改變,因此如果有final修飾字段,應(yīng)該對(duì)字段進(jìn)行手動(dòng)初始化。修飾方法后該方法不能被改變,也就是重寫。
3、abstract修飾符
abstract是抽象的意思,用來(lái)修飾類和方法,修飾類后,該類為抽象類,不能被實(shí)例化,必需進(jìn)行擴(kuò)展。修飾方法后,該方法為抽象方法必須被子類重寫(override)。
4、static修飾符
static用來(lái)修飾內(nèi)部類,方法,字段。修飾內(nèi)部類說(shuō)明該內(nèi)部類屬于外部類而不屬于外部類的某個(gè)實(shí)例。修飾字段說(shuō)明該字段屬于類而不屬于類實(shí)例。修飾方法說(shuō)明該方法屬于類而不屬于類實(shí)例
5、volatile修飾符
易失 ( 共享 ) 域修飾符 volatile 是用來(lái)說(shuō)明這個(gè)成員變量可能被幾個(gè)線程所控制和修改。也就是說(shuō)在程序運(yùn)行過(guò)程中,這個(gè)成員變量有可能被其它的程序影響或改變它的取值。
擴(kuò)展資料:
修飾符的特點(diǎn):
static是一個(gè)修飾符,用于修飾成員(成員變量和成員函數(shù))
靜態(tài)成員隨著類的加載而加載。靜態(tài)成員優(yōu)先于對(duì)象存在。靜態(tài)成員被所有對(duì)象所共享靜態(tài)成員多了一個(gè)中調(diào)用方式,可以被類名直接調(diào)用。
使用的注意事項(xiàng):
靜態(tài)方法只能訪問(wèn)靜態(tài)成員, 非靜態(tài)方法既可以訪問(wèn)靜態(tài)又可以訪問(wèn)非靜態(tài)。靜態(tài)方法中不可以定義this,super關(guān)鍵字。因?yàn)閠his代表是對(duì)象。而靜態(tài)存在時(shí),有可能沒(méi)有對(duì)象。所以靜態(tài)方法運(yùn)行時(shí),this是沒(méi)有任何對(duì)象代表的。
簡(jiǎn)單說(shuō),先進(jìn)內(nèi)存的數(shù)據(jù)不可以訪問(wèn)后進(jìn)內(nèi)存的數(shù)據(jù),可是后進(jìn)內(nèi)存數(shù)據(jù)可以訪問(wèn)先進(jìn)內(nèi)存的數(shù)據(jù)。主函數(shù)是靜態(tài)的。
類修飾符
Public
可以從其他類中訪問(wèn)
obstract
本類不能被實(shí)例化
final
不能再聲明子類
構(gòu)造器修飾符
Public
可以從所有的類中訪問(wèn)
Protected
只能從自己的類和它的子類中訪問(wèn)
Private
只能在本類中訪問(wèn)
域修飾符
Public
可以從所有的類中訪問(wèn)
Protected
只能從本類和它的子類中訪問(wèn)
Private
只能從本類中訪問(wèn)它
Static
對(duì)該類的所有實(shí)例只能有一個(gè)域值存在
transient
不是一個(gè)對(duì)象持久狀態(tài)的一部份
Volatile
可以被異步的線程所修改
final
必須對(duì)它賦予初值并且不能修改它
局部變量修飾符
final
必須對(duì)它賦予初值并且不能修改它
方法修飾符
Public
可以從所有的類中訪問(wèn)它
Protected
只能從本類及其子類中訪問(wèn)它
Private
只能從本類中訪問(wèn)它
abstract
沒(méi)有方法體,屬于一個(gè)抽象類
final
子類不能覆蓋它
static
被綁定于類本身而不是類的實(shí)例
native
該方法由其他編程語(yǔ)言實(shí)現(xiàn)
asnchronized
在一個(gè)線程調(diào)用它之前必須先給它加
一,非訪問(wèn)修飾符。
1, 抽象類: 凡是用abstract修飾符修飾的類被稱為抽象類。抽象類就是沒(méi)有具體對(duì)象的概念類。
抽象類是一種經(jīng)過(guò)優(yōu)化的概念組織方式:把共同特點(diǎn)抽象出來(lái);其后在描述和處理某一種具體對(duì)象時(shí),就只需描述不同的特殊之處。這種組織方式使得所有的概念層次分明,簡(jiǎn)潔洗練,非常符合人們?nèi)粘5乃季S習(xí)慣。
由于抽象類是它的所有子類的公共屬性的集合,所以使用抽象類的一個(gè)優(yōu)點(diǎn)就是可以充分利用這些公共屬性來(lái)提高開發(fā)和維護(hù)程序的效率。 值得一提的是,面向?qū)ο蠹夹g(shù)是要用更接近于人類思維方式的方法來(lái)處理實(shí)際問(wèn)題,抽象類的設(shè)立就是這種思想的具體體現(xiàn)之一,它是模仿人類的思維模式的產(chǎn)物。
2,最終類: 如果一個(gè)類被final修飾符所修飾和限定,說(shuō)明這個(gè)類不可能有子類。 被定義為final的類通常是一些有固定作用、用來(lái)完成某種標(biāo)準(zhǔn)功能的類。
如Java系統(tǒng)定義好的用來(lái)實(shí)現(xiàn)網(wǎng)絡(luò)功能的InterAddress、Socket等類都是final類。 abstract和final修飾符不能同時(shí)修飾一個(gè)類,因?yàn)閍bstract類自身沒(méi)有具體對(duì)象,需要派生出子類后在創(chuàng)建子類的對(duì)象;而final類不可能有子類。
這樣放在一起修飾就沒(méi)有意義了。 3,有些類的修飾符也可以用來(lái)修飾類中的域或方法: (1) 域:是類和對(duì)象的靜態(tài)屬性,定義域的操作就是說(shuō)明變量或創(chuàng)建對(duì)象的操作。
靜態(tài)域: 用static修飾符修飾的域是僅屬于類的靜態(tài)域。靜態(tài)域是類中每個(gè)對(duì)象共享的域。
他們是類的域,不屬于任何一個(gè)類的具體對(duì)象。是一個(gè)公共的存儲(chǔ)單元,任何一個(gè)類的對(duì)象訪問(wèn)它時(shí),取到的都是相同的數(shù)值。
靜態(tài)初始化器: 靜態(tài)初始化器是由關(guān)鍵字static引導(dǎo)的一對(duì)大括號(hào)括起的語(yǔ)句組。作用是:在加載時(shí),初始化類的靜態(tài)域。
與構(gòu)造函數(shù)相同,他們都是用來(lái)完成初始化的工作,但是靜態(tài)初始化器與構(gòu)造函數(shù)有三點(diǎn)不同: ①構(gòu)造函數(shù)是對(duì)每個(gè)新創(chuàng)建的對(duì)象初始化,而靜態(tài)初始化器是對(duì)類自身進(jìn)行初始化。 ②構(gòu)造函數(shù)是在用new運(yùn)算符產(chǎn)生新對(duì)象時(shí)由系統(tǒng)自動(dòng)執(zhí)行,而靜態(tài)初始化器則是在它所屬的類加載到內(nèi)存時(shí)由系統(tǒng)調(diào)用執(zhí)行。
③不同于構(gòu)造函數(shù),靜態(tài)初始化器不是方法,沒(méi)有方法名、返回值和參數(shù)列表。 最終域: 用final修飾的域,實(shí)際上就是Java中的常量。
用final修飾符說(shuō)明常量時(shí),需要注意以下幾點(diǎn): ①需要說(shuō)明常量的數(shù)據(jù)類型。 ②需要同時(shí)指出常量的具體取值。
③因?yàn)樗蓄悓?duì)象的常量成員,其數(shù)值都固定一致,為了節(jié)省空間,常量通常聲明為static。 易失域: 如果一個(gè)域被volatile修飾符所修飾,說(shuō)明這個(gè)域可能同時(shí)被幾個(gè)線程所控制和修改,即這個(gè)域不僅僅被當(dāng)前程序所掌握,在運(yùn)行過(guò)程中可能在其他未知的程序操作影響和改變?cè)撚虻娜≈怠?/p>
在使用當(dāng)中應(yīng)該特別注意。 通常,volatile用來(lái)修飾接受外部輸入的域。
如表示當(dāng)前時(shí)間的變量將系統(tǒng)的后臺(tái)線程隨時(shí)修改,以保證程序中取到的總是最新的當(dāng)前系統(tǒng)時(shí)間,所以可以把它定義為易失域。 (2)方法:是類的動(dòng)態(tài)屬性,標(biāo)志了類所具有的功能和操作。
小括號(hào)是方法的標(biāo)志。 抽象方法: 修飾符abstract修飾的抽象方法是一種僅有方法頭,而沒(méi)有具體的方法體和操作實(shí)現(xiàn)的方法。
使用抽象方法的目的是使所有的子類,對(duì)外都呈現(xiàn)一個(gè)相同名字的方法,是一個(gè)統(tǒng)一的接口。所有的抽象方法,都必須存在于抽象類之中。
靜態(tài)方法: 用static修飾符修飾的方法,是屬于整個(gè)類的類方法,不用的是對(duì)象或?qū)嵗姆椒?。調(diào)用這種方法時(shí),應(yīng)該使用類名作前綴;這種方法在內(nèi)存中的代碼段將隨著類的定義而分配和裝載,不被任何一個(gè)對(duì)象專有;只能處理屬于整個(gè)類的成員變量。
最終方法: 用final修飾符修飾的類方法。功能和內(nèi)部語(yǔ)句不能再更改的方法,不能再被繼承。
注意:所有已被private修飾符限定為私有的方法,以及所有包含在final類中的方法,都被缺省地認(rèn)為是final的。 本地方法: 用native修飾符聲明其他語(yǔ)言書寫方法體并具體實(shí)現(xiàn)方法功能的特殊的方法。
這里的其他語(yǔ)言包括C/C++/FROTRAN/匯編等。由于native的方法的方法體使用其他語(yǔ)言在程序外部寫成,所以所有的native方法都沒(méi)有方法體,而用一個(gè)分號(hào)代替。
同步方法: 如果synchronized修飾的方法是一個(gè)類的方法(即static的方法),那么在被調(diào)用執(zhí)行前,將把系統(tǒng)類Class中對(duì)應(yīng)當(dāng)前類的對(duì)象加鎖。如果synchronized修飾的是一個(gè)對(duì)象的方法(未用static修飾的方法),則這個(gè)方法在被調(diào)用執(zhí)行前,將把當(dāng)前對(duì)象加鎖。
Synchronized修飾符主要用于多線程共存的程序中的協(xié)調(diào)和同步。 二,訪問(wèn)控制符。
訪問(wèn)控制符是一組限定類、域或方法是否可以被程序里的其他部分訪問(wèn)和調(diào)用的修飾符。類的訪問(wèn)控制符只有一個(gè)public,域和方法的訪問(wèn)控制符有四個(gè),分別是public、private、protected、private protected,另外還有一種沒(méi)有定義專門的訪問(wèn)控制符的缺省情況。
1, 公有訪問(wèn)控制符public: Java的類是通過(guò)包的概念來(lái)組織的,包氏類的一個(gè)松散的集合。處于同一個(gè)包中的類可以不需要任何說(shuō)明而方便的互相訪問(wèn)和引用,而對(duì)于不同包中的類,則不行。
但當(dāng)一個(gè)類被聲明為public時(shí),他就具有了被其他包中的類訪問(wèn)的可能性,只要這些其。
聲明:本網(wǎng)站尊重并保護(hù)知識(shí)產(chǎn)權(quán),根據(jù)《信息網(wǎng)絡(luò)傳播權(quán)保護(hù)條例》,如果我們轉(zhuǎn)載的作品侵犯了您的權(quán)利,請(qǐng)?jiān)谝粋€(gè)月內(nèi)通知我們,我們會(huì)及時(shí)刪除。
蜀ICP備2020033479號(hào)-4 Copyright ? 2016 學(xué)習(xí)鳥. 頁(yè)面生成時(shí)間:2.567秒