final final在Java中是一個保留的關鍵字,可以聲明成員變數、方法、類以及本地變數。一旦你將引用聲明作final,你將不能改變這個引用了,編譯器會檢查代碼,如果你試圖將變數再次初始化的話,編譯器會報編譯錯誤。 修飾變數(例如Math類的PI=3.1415926就是變數不可修改) 用fina ...
final
final在Java中是一個保留的關鍵字,可以聲明成員變數、方法、類以及本地變數。一旦你將引用聲明作final,你將不能改變這個引用了,編譯器會檢查代碼,如果你試圖將變數再次初始化的話,編譯器會報編譯錯誤。
修飾變數(例如Math類的PI=3.1415926就是變數不可修改)
用final關鍵字修飾的成員(實例)變數或局部變數統稱為final變數。final變數經常和static關鍵字一起使用,作為常量。用final關鍵字修飾的變數,如果是基本數據類型的變數,則其數值一旦在初始化之後便不能更改(只讀類型);如果是引用類型的變數,則在對其初始化之後便不能再讓其指向另一個對象。
修飾方法
final關鍵字可以修飾方法,代表這個方法不可以被子類的方法重寫(覆蓋)。如果你認為一個方法的功能已經足夠完整了,繼承它的類中不需要改變的話,你可以聲明此方法為final。final方法比非final方法要快,因為在編譯的時候已經靜態綁定了,不需要在運行時再動態綁定。
關於private和final關鍵字還有一點聯繫,這就是類中所有的private方法都隱式地指定為是final的,由於無法在類外使用private方法,所以也就無法覆蓋它。
修飾類
當用final修飾一個類時,表明這個類不能被繼承。也就是說,如果一個類你永遠不會讓他被繼承,就可以用final進行修飾。final類中的成員變數可以根據需要設為final,但是要註意final類中的所有成員方法都會被隱式地指定為final方法。Java中有許多類是final的,譬如String類、Math類、Integer以及其他包裝類。
abstract
修飾方法
abstract關鍵字修飾的方法稱為抽象方法。抽象方法只有方法的聲明,沒有方法的實現,即方法名後面沒有大括弧{},抽象方法是供子類繼承重寫的,他的實現是通過子類繼承方法所在的類,然後重寫(覆蓋)該方法並實現具體功能。抽象方法一般定義在抽象類和介面中。
修飾類
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
工作、學習、交流或有任何疑問,請聯繫郵箱:[email protected]