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