Java語(yǔ)言定義了public、protected、private、abstract、static和final這6常用修飾詞外還定義了5個(gè)不太常用的修飾詞,下面是對(duì)這11個(gè)Java修飾詞的介紹:
1.public
使用對(duì)象:類(lèi)、接口、成員
介紹:無(wú)論它所處在的包定義在哪,該類(lèi)(接口、成員)都是可訪問(wèn)的
2.private
使用對(duì)象:成員
介紹:成員只可以在定義它的類(lèi)中被訪問(wèn)
3.static
使用對(duì)象:類(lèi)、方法、字段、初始化函數(shù)
介紹:成名為static的內(nèi)部類(lèi)是一個(gè)頂級(jí)類(lèi),它和包含類(lèi)的成員是不相關(guān)的。靜態(tài)方法是類(lèi)方法,是被指向到所屬的類(lèi)而不是類(lèi)的實(shí)例。靜態(tài)字段是類(lèi)字段,無(wú)論該字段所在的類(lèi)創(chuàng)建了多少實(shí)例,該字段只存在一個(gè)實(shí)例被指向到所屬的類(lèi)而不是類(lèi)的實(shí)例。初始化函數(shù)是在裝載類(lèi)時(shí)執(zhí)行的,而不是在創(chuàng)建實(shí)例時(shí)執(zhí)行的。
4.final
使用對(duì)象:類(lèi)、方法、字段、變量
介紹:被定義成final的類(lèi)不允許出現(xiàn)子類(lèi),不能被覆蓋(不應(yīng)用于動(dòng)態(tài)查詢(xún)),字段值不允許被修改。
5.abstract
使用對(duì)象:類(lèi)、接口、方法
介紹:類(lèi)中包括沒(méi)有實(shí)現(xiàn)的方法,不能被實(shí)例化。如果是一個(gè)abstract方法,則方法體為空,該方法的實(shí)現(xiàn)在子類(lèi)中被定義,并且包含一個(gè)abstract方法的類(lèi)必須是一個(gè)abstract類(lèi)
6.protected
使用對(duì)象:成員
介紹:成員只能在定義它的包中被訪問(wèn),如果在其他包中被訪問(wèn),則實(shí)現(xiàn)這個(gè)方法的類(lèi)必須是該成員所屬類(lèi)的子類(lèi)。
7.native
使用對(duì)象:成員
介紹:與操作平臺(tái)相關(guān),定義時(shí)并不定義其方法,方法的實(shí)現(xiàn)被一個(gè)外部的庫(kù)實(shí)現(xiàn)。
8.strictfp
使用對(duì)象:類(lèi)、方法
介紹:strictfp修飾的類(lèi)中所有的方法都隱藏了strictfp修飾詞,方法執(zhí)行的所有浮點(diǎn)計(jì)算遵守IEEE 754標(biāo)準(zhǔn),所有取值包括中間的結(jié)果都必須表示為float或double類(lèi)型,而不能利用由本地平臺(tái)浮點(diǎn)格式或硬件提供的額外精度或表示范圍。
9.synchronized
使用對(duì)象:方法
介紹:對(duì)于一個(gè)靜態(tài)的方法,在執(zhí)行之前jvm把它所在的類(lèi)鎖定;對(duì)于一個(gè)非靜態(tài)類(lèi)的方法,執(zhí)行
前把某個(gè)特定對(duì)象實(shí)例鎖定。
10.volatile
使用對(duì)象:字段
介紹:因?yàn)楫惒骄€程可以訪問(wèn)字段,所以有些優(yōu)化操作是一定不能作用在字段上的。volatile有時(shí)可以代替synchronized。
11.transient
使用對(duì)象:字段
介紹:字段不是對(duì)象持久狀態(tài)的一部分,不應(yīng)該把字段和對(duì)象一起串起。