淺析對(duì)Java關(guān)鍵字final和static的理解-創(chuàng)新互聯(lián)

創(chuàng)新互聯(lián)www.cdcxhl.cn八線動(dòng)態(tài)BGP香港云服務(wù)器提供商,新人活動(dòng)買多久送多久,劃算不套路!

成都創(chuàng)新互聯(lián)公司于2013年創(chuàng)立,是專業(yè)互聯(lián)網(wǎng)技術(shù)服務(wù)公司,擁有項(xiàng)目網(wǎng)站建設(shè)、成都做網(wǎng)站網(wǎng)站策劃,項(xiàng)目實(shí)施與項(xiàng)目整合能力。我們以讓每一個(gè)夢(mèng)想脫穎而出為使命,1280元永嘉做網(wǎng)站,已為上家服務(wù),為永嘉各地企業(yè)和個(gè)人服務(wù),聯(lián)系電話:18982081108

一、final

            根據(jù)程序上下文環(huán)境,Java關(guān)鍵字final有“這是無(wú)法改變的”或者“終態(tài)的”含義,它可以修飾非抽象類、非抽象類成員方法和變量。你可能出于兩種理解而需要阻止改變:設(shè)計(jì)或效率。

  • final類不能被繼承,沒(méi)有子類,final類中的方法默認(rèn)是final的。
  • final方法不能被子類的方法覆蓋,但可以被繼承。
  • final成員變量表示常量,只能被賦值一次,賦值后值不再改變。
  • final不能用于修飾構(gòu)造方法。

        注意:父類的private成員方法是不能被子類方法覆蓋的,因此private類型的方法默認(rèn)是final類型的。

總的來(lái)說(shuō),final用于聲明屬性,方法和類,分別表示屬性不可變,方法不可覆蓋,類不可繼承。

1)final修飾類

         當(dāng)用final修飾一個(gè)類時(shí),表明這個(gè)類不能被繼承,因此final類的成員方法沒(méi)有機(jī)會(huì)被覆蓋,默認(rèn)都是final的。那也就意味著此類在繼承樹(shù)中是一個(gè)葉子類,并且此類的設(shè)計(jì)已被認(rèn)為很完美而不需要進(jìn)行修改或擴(kuò)展。對(duì)于final類中的成員,可以定義其為final,也可以不是final。而對(duì)于方法,自然也就成了final型的。在使用final修飾類的時(shí)候,要注意謹(jǐn)慎選擇,除非這個(gè)類真的在以后不會(huì)用來(lái)繼承或者出于安全的考慮,盡量不要將類設(shè)計(jì)為final類。

2)final修飾方法

   使用final方法的原因有兩個(gè)。第一就是說(shuō)明已經(jīng)知道這個(gè)方法提供的功能已經(jīng)滿足要求,不需要進(jìn)行擴(kuò)展,并且也不允許任何從此類繼承而是的子類來(lái)覆寫這個(gè)方法,但是繼承類仍然可以直接使用這個(gè)方法。第二就是高效,編譯器在遇到調(diào)用final方法時(shí)候會(huì)將所有對(duì)此方法的調(diào)用轉(zhuǎn)化為inline調(diào)用的機(jī)制,大大提高執(zhí)行效率。然而當(dāng)方法主體非常龐大時(shí),或在多處調(diào)用此方法時(shí),調(diào)用代碼便會(huì)迅速膨脹,可能反而會(huì)影響效率,所以要慎用final進(jìn)行方法定義。只有在想明確禁止該方法在子類中被覆蓋的情況下才將方法設(shè)置為final的。例如:

class Test1 { 
 public void f1() { 
  System.out.println("f1"); 
 } 
 //無(wú)法被子類覆蓋的方法 
 public final void f2() { 
  System.out.println("f2"); 
 } 
 public void f3() { 
  System.out.println("f3"); 
 } 
 private void f4() { 
  System.out.println("f4"); 
 } 
} 
public class Test2 extends Test1 {  
 public void f1(){  
  System.out.println("Test1父類方法f1被覆蓋!"); 
 } 
 public static void main(String[] args) { 
  Test2 t = new Test2(); 
  t.f1();  
  t.f2(); //調(diào)用從父類繼承過(guò)來(lái)的final方法 
  t.f3(); //調(diào)用從父類繼承過(guò)來(lái)的方法 
  //t.f4(); //調(diào)用失敗,無(wú)法從父類繼承獲得 
 } 
} 

網(wǎng)頁(yè)標(biāo)題:淺析對(duì)Java關(guān)鍵字final和static的理解-創(chuàng)新互聯(lián)
當(dāng)前鏈接:http://muchs.cn/article6/cdssog.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供建站公司、網(wǎng)站設(shè)計(jì)移動(dòng)網(wǎng)站建設(shè)、網(wǎng)站內(nèi)鏈網(wǎng)站收錄、網(wǎng)站設(shè)計(jì)公司

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

綿陽(yáng)服務(wù)器托管