final在Java中是一個保留的關鍵字,能夠聲明成員變量、方法、類以及本地變量。一旦你將引用聲明做final,你將不能改變這個引用了,編譯器會檢查代碼,若是你試圖將變量再次初始化的話,編譯器會報編譯錯誤。html
修飾變量(例如Math類的PI=3.1415926就是變量不可修改)學習
用final關鍵字修飾的成員(實例)變量或局部變量統稱爲final變量。final變量常常和static關鍵字一塊兒使用,做爲常量。用final關鍵字修飾的變量,若是是基本數據類型的變量,則其數值一旦在初始化以後便不能更改(只讀類型);若是是引用類型的變量,則在對其初始化以後便不能再讓其指向另外一個對象。htm
修飾方法對象
final關鍵字能夠修飾方法,表明這個方法不能夠被子類的方法重寫(覆蓋)。若是你認爲一個方法的功能已經足夠完整了,繼承它的類中不須要改變的話,你能夠聲明此方法爲final。final方法比非final方法要快,由於在編譯的時候已經靜態綁定了,不須要在運行時再動態綁定。blog
關於private和final關鍵字還有一點聯繫,這就是類中全部的private方法都隱式地指定爲是final的,因爲沒法在類外使用private方法,因此也就沒法覆蓋它。繼承
修飾類接口
當用final修飾一個類時,代表這個類不能被繼承。也就是說,若是一個類你永遠不會讓他被繼承,就能夠用final進行修飾。final類中的成員變量能夠根據須要設爲final,可是要注意final類中的全部成員方法都會被隱式地指定爲final方法。Java中有許多類是final的,譬如String類、Math類、Integer以及其餘包裝類。編譯器
修飾方法編譯
abstract關鍵字修飾的方法稱爲抽象方法。抽象方法只有方法的聲明,沒有方法的實現,即方法名後面沒有大括號{},抽象方法是供子類繼承重寫的,他的實現是經過子類繼承方法所在的類,而後重寫(覆蓋)該方法並實現具體功能。抽象方法通常定義在抽象類和接口中。class
修飾類
abstract關鍵字修飾的類稱爲抽象類。抽象類不能被實例化,不能經過new關鍵字建立類的對象。若是子類(非抽象類)繼承了抽象類,抽象類能夠指向子類的引用。抽象類能夠包含抽象方法和非抽象方法。
如abstract class A{}、class B extends A{},不能夠建立A類的實例對象即不能夠「A a=new A();」。但A類的引用變量能夠指向B類對象,便可以「A a=new B();」。
轉載請註明出處 http://www.cnblogs.com/Y-oung/p/9048287.html
工做、學習、交流或有任何疑問,請聯繫郵箱:yy1340128046@163.com