及源代碼課件08java修飾符08_第1頁(yè)
及源代碼課件08java修飾符08_第2頁(yè)
及源代碼課件08java修飾符08_第3頁(yè)
及源代碼課件08java修飾符08_第4頁(yè)
及源代碼課件08java修飾符08_第5頁(yè)
已閱讀5頁(yè),還剩15頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(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ì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論