版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、修飾符本節(jié)主要內(nèi)容static變量、方法和初始化器final類、方法和變量abstract類和abstract方法Java中的修飾符修飾符類成員方法構(gòu)造方法成員變量局部變量abstract(抽象的)YesYesNoNoNostatic(靜態(tài)的)NoYesNoYesNopublic(共有的)YesYesYesYesNoprotected(受保護(hù)的)NoYesYesYesNoprivate(私有的)NoYesYesYesNosynchronized(同步的)NoYesNoNoNostrictfpYESyesnononofinal(不可變的)YesYesNoYesYes 修飾頂層類的修飾符包括:ab
2、stract,public,final;而static,protected和private 不能修飾頂層類.成員變量和成員方法可以使用多種修飾符,局部變量 只能使用final修飾符訪問(wèn)控制修飾符面向?qū)ο蟮幕舅枷胫痪褪欠庋b實(shí)行細(xì)節(jié),并且公開接口.Java語(yǔ)言才用訪問(wèn)控制修飾符來(lái)控制類及類的方法和變量的訪問(wèn)權(quán)限.訪問(wèn)控制分為四種級(jí)別:訪問(wèn)級(jí)別修飾符同類同包子類不同的包公開publicYesYesYesYes保護(hù)protectedYesYesYesNo默認(rèn)無(wú)修飾符YesYesNoNo私有privateYesNoNoNostatic修飾符static修飾符可以用來(lái)修飾類的成員變量,成員方法和代碼塊
3、用static修飾的成員變量表示靜態(tài)變量,可以直接通過(guò)類名來(lái)訪問(wèn)用static修飾的成員方法稱為靜態(tài)方法,可以直接通過(guò)類名來(lái)訪問(wèn)用static修飾的代碼塊稱為靜態(tài)代碼塊,當(dāng)JVM加載類時(shí),就會(huì)自動(dòng)的執(zhí)行該代碼塊被static修飾的成員變量和成員方法表明歸某個(gè)類所有.它不依賴于類的特定的實(shí)例.被這些類的實(shí)例所共享 代碼參見(jiàn)案例:11-2 static修飾符static變量類的變量有兩種,一種是被static修飾的變量,稱為靜態(tài)變量;另一種是沒(méi)有static修飾的,稱為實(shí)例變量,二者的的區(qū)別是靜態(tài)變量載內(nèi)存中只有一個(gè)拷貝.運(yùn)行是JVM只為靜態(tài)變量分配一次內(nèi)存.載加載類的過(guò)程中完成靜態(tài)變量的內(nèi)存分配
4、.對(duì)于實(shí)例變量,每創(chuàng)建一個(gè)對(duì)象,就會(huì)為實(shí)例變量分配一次內(nèi)存.實(shí)例變量載內(nèi)存中有多個(gè)拷貝,互不影響在類的內(nèi)部,可以在任何的方法中直接訪問(wèn)靜態(tài)變量.在其他類中,可以通過(guò)類名+“.”的方法來(lái)訪問(wèn),也可以通過(guò)創(chuàng)建一個(gè)對(duì)象,然后通過(guò)對(duì)象名來(lái)訪問(wèn)如果類的所有實(shí)例中都包括一些相同的常量屬性,可以把這樣變量作出靜態(tài)變量,從而節(jié)省內(nèi)存空間static方法成員方法分為靜態(tài)方法和成員方法.被static修飾的稱為靜態(tài)方法或類方法.靜態(tài)方法和靜態(tài)變量一樣,可以不用創(chuàng)建類的實(shí)例,而直接通過(guò)類名來(lái)訪問(wèn).靜態(tài)方法可以訪問(wèn)的內(nèi)容: 1 .在靜態(tài)方法中不能使用this/super關(guān)鍵字 2. 不能訪問(wèn)類的實(shí)例變量和實(shí)例方法 3
5、. 可以直接訪問(wèn)類的靜態(tài)方法和靜態(tài)變量 參見(jiàn)代碼:案例11-3 static方法實(shí)例方可以訪問(wèn)的內(nèi)容:在實(shí)例方法中可以訪問(wèn)靜態(tài)變量,靜態(tài)方法,實(shí)例變量和實(shí)例方法作為程序入口的main()方法是靜態(tài)的:使JVM只要加載了main()方法所屬的類,就能執(zhí)行main()方法,而不用創(chuàng)建這個(gè)類的實(shí)例static塊被static修飾的代碼塊稱為靜態(tài)代碼塊.JVM在加載類時(shí)會(huì)執(zhí)行這些靜態(tài)代碼塊.如果類中有多個(gè)靜態(tài)塊,JVM會(huì)安裝他們?cè)陬愔谐霈F(xiàn)的順序一次執(zhí)行它們,每個(gè)靜態(tài)塊只會(huì)被執(zhí)行一次.通常用于初始化靜態(tài)變量靜態(tài)塊和靜態(tài)方法一樣,不能直接訪問(wèn)類的實(shí)例變量和實(shí)例方法代碼參見(jiàn)案例:11-4 靜態(tài)塊static
6、的應(yīng)用:單子模式有時(shí)候,我們需要實(shí)現(xiàn)這樣的功能:那就是在整個(gè)應(yīng)用中,只有一個(gè)實(shí)例存在。比如,在PowerPoint中,只能出現(xiàn)一個(gè)幫助窗口。如果將這個(gè)幫助窗口當(dāng)作一個(gè)類,這就意味著它只能有一個(gè)實(shí)例。利用單子(Singleton)設(shè)計(jì)模式,可以實(shí)現(xiàn)這種需求。代碼參見(jiàn)案例:11-5 單子模式參見(jiàn)java源代碼:Runtime.javafinal修飾符final具有“不可改變的”含義,可以修飾非抽象類,非抽象方法和變量用final修飾的類不能被繼承用final修飾的方法不能被覆蓋用final修飾的變量表示常量,只能被賦值一次用final修飾的局部變量表示常量,只能被賦值一次final不能修飾構(gòu)造方法
7、final類如果某個(gè)類不想被其他類繼承,可以考慮把類定義為final類型不是專門為繼承而設(shè)計(jì)的類.類本身的方法之間有復(fù)雜的調(diào)用關(guān)系.假如隨便繼承這些類,子類可能會(huì)錯(cuò)誤的修改父類的實(shí)現(xiàn)細(xì)節(jié)出于安全的原因,類的實(shí)現(xiàn)細(xì)節(jié)不能被擴(kuò)展創(chuàng)建對(duì)象模型時(shí),確信這個(gè)類不會(huì)被擴(kuò)展代碼參見(jiàn):java.lang.Stringfinal方法在某些情況下,出于安全的考慮,父類不讓子類覆蓋某個(gè)方法,可以把這個(gè)方法聲明為final類型,例如:java.lang.Object的getClass()方法.而equals()方法沒(méi)有final修飾,可以在子類中覆蓋,實(shí)現(xiàn)新的需求final變量用final修飾的變量表示取值不會(huì)改變的
8、常量.例如在java.lang.Integer中聲明的兩個(gè)常量: public static final int MIN_VALUE = 0 x80000000; public static final int MAX_VALUE = 0 x7fffffff;final可以修飾靜態(tài)變量,實(shí)例變量和局部變量,分別表示靜態(tài)常量,實(shí)例常量和局部常量.靜態(tài)常量一般以大寫字母命名,單詞之間用“_”分割;final變量必須被顯示的賦值: public class FinalVar final int var1; / 錯(cuò)誤final static int VAR2; / 錯(cuò)誤int var3; / 合法 s
9、tatic int var4; / 合法 代碼參見(jiàn)案例:final變量只能被賦值一次,否則會(huì)出錯(cuò)final變量(con)如果將引為類型的變量用final修飾,那么該變量只能始終引用一個(gè)對(duì)象,但是可以改變對(duì)象的內(nèi)容public class FinalRef public int i;public FinalRef(int i) this.i = i;public static void main(String args) final FinalRef fr = new FinalRef(5);fr.i = 9;fr = new FinalRef(6); /出錯(cuò)代碼參見(jiàn)案例:11-7 final類
10、型的引用對(duì)象abstract修飾符可以使用abstract來(lái)修飾一個(gè)類或者方法。用abstract修飾的類表示這個(gè)類是一個(gè)抽象類, 抽象類不能被實(shí)例化.沒(méi)有abstract修飾的類稱為具體類,具體類可以被實(shí)例化.用abstract修飾的方法表示這個(gè)方法是一個(gè)抽象方法.抽象方法是只有方法聲明,而沒(méi)有方法的實(shí)現(xiàn)的方法。抽象方法用來(lái)表述系統(tǒng)具有什么樣的功能,但是不提供具體的實(shí)現(xiàn) 例如: public abstract class Base / 抽象類 abstract void func1(); / 抽象方法 void func2(). / 具體方法 使用abstract注意事項(xiàng)抽象類中可以沒(méi)有抽象
11、方法,但是包含了抽象方法的類必須定義為抽象類.一個(gè)類繼承一個(gè)抽象類, 如果實(shí)現(xiàn)抽象類中的所有的抽象方法,則這個(gè)子類是一個(gè)具體類.如果一個(gè)子類沒(méi)有全部實(shí)現(xiàn)抽象類的抽象方法,那么這個(gè)之類必須被定義為抽象類抽象類不能被實(shí)例化,但是可以可以創(chuàng)建抽象類型的引用,引用實(shí)現(xiàn)類的對(duì)象沒(méi)有抽象的構(gòu)造方法,也沒(méi)有抽象的靜態(tài)的方法(abstract和staitc不能同時(shí)出現(xiàn)).例如: public abstract class AbstractTest abstract AbstractTest(); abstract static void func1(); 抽象類中可以有非抽象的構(gòu)造方法,創(chuàng)建子類時(shí)可以調(diào)用這些
12、構(gòu)造方法 代碼參見(jiàn)案例: 11-1 抽象類中的非抽象構(gòu)造方法抽象類不能被final修飾符修飾抽象類(abstract class)抽象類里面并非一定需要抽象方法,但是沒(méi)有抽象方法,抽象類就沒(méi)有存在的必要在以下任一條件成立時(shí),類必須定義成抽象類:類中有至少一個(gè)抽象方法類繼承了父類中的抽象方法,但是至少有一個(gè)抽象方法沒(méi)有實(shí)現(xiàn)類實(shí)現(xiàn)了某個(gè)接口,但沒(méi)有全部實(shí)現(xiàn)接口中的方法小結(jié)訪問(wèn)控制修飾符:public的訪問(wèn)級(jí)別最高,其次是protected,默認(rèn),private類可以被public和默認(rèn)修飾,不能被protected, private修飾局部變量不能被訪問(wèn)控制修飾符修飾abstract修飾符抽象類不能被實(shí)例化抽象類中可以沒(méi)有抽象方法.但是有抽象方法的類必須被定義為抽象類如果子類中沒(méi)有實(shí)現(xiàn)抽象父類中的所有的抽象方法,那么子類也必須定義為抽象類抽象類不能被定義為private,final,和static類型沒(méi)有抽象的構(gòu)造方法(抽象類中的構(gòu)造方法可以不是抽象的)抽象方法沒(méi)有方法體小結(jié)(Con)final修飾符final修飾的類不能被繼承final修飾的方法不能被覆蓋final變量必須被顯示的賦值,并且只能被賦值一次static修飾符靜態(tài)變量在內(nèi)存中只有一個(gè)拷貝,在類的所有實(shí)例中共享在靜態(tài)方法中不能直接訪問(wèn)實(shí)例變量和實(shí)例方法在靜態(tài)方法中不能私有this和
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 部審人教版七年級(jí)數(shù)學(xué)下冊(cè)聽(tīng)評(píng)課記錄《5.2.1 平行線》2
- 人教版地理七年級(jí)上冊(cè)第二節(jié)《地球的運(yùn)動(dòng)》聽(tīng)課評(píng)課記錄3
- 湘教版數(shù)學(xué)八年級(jí)上冊(cè)4.1《不等式》聽(tīng)評(píng)課記錄
- 人教版地理八年級(jí)下冊(cè)7.2《魚米之鄉(xiāng)-長(zhǎng)江三角洲地區(qū)》聽(tīng)課評(píng)課記錄2
- 用戶體驗(yàn)設(shè)計(jì)服務(wù)協(xié)議書(2篇)
- 環(huán)境整治用功協(xié)議書(2篇)
- 人教部編版八年級(jí)道德與法治上冊(cè):8.1《國(guó)家好 大家才會(huì)好-國(guó)家利益的含義》聽(tīng)課評(píng)課記錄
- 【人教版】河南省八年級(jí)地理上冊(cè)3.2土地資源聽(tīng)課評(píng)課記錄1新版新人教版
- 新版華東師大版八年級(jí)數(shù)學(xué)下冊(cè)《17.3.2一次函數(shù)的圖象2》聽(tīng)評(píng)課記錄22
- 北京課改版歷史八年級(jí)上冊(cè)第3課《第二次鴉片戰(zhàn)爭(zhēng)》聽(tīng)課評(píng)課記錄
- 急性腎小球腎炎病人護(hù)理課件
- 招標(biāo)代理服務(wù)的關(guān)鍵流程與難點(diǎn)解析
- GB/T 5465.2-2023電氣設(shè)備用圖形符號(hào)第2部分:圖形符號(hào)
- 材料預(yù)定協(xié)議
- 2023年河北省中考數(shù)學(xué)試卷(含解析)
- 《學(xué)習(xí)的本質(zhì)》讀書會(huì)活動(dòng)
- 高氨血癥護(hù)理課件
- 物流營(yíng)銷(第四版) 課件 胡延華 第3、4章 物流目標(biāo)客戶選擇、物流服務(wù)項(xiàng)目開發(fā)
- 《石油化工電氣自動(dòng)化系統(tǒng)設(shè)計(jì)規(guī)范》
- Q-GGW-BF-0117-2023天然氣管道無(wú)人站技術(shù)規(guī)范
- 《公路勘測(cè)細(xì)則》(C10-2007 )【可編輯】
評(píng)論
0/150
提交評(píng)論