Java中final、finally、finalize的區別
阿新 • • 發佈:2019-02-01
1.2 定義方法當final用來定義一個方法時,會有什麼效果呢?正如大家所知,它表示這個方法不可以被子類重寫,但是它這不影響它被子類繼承。我們寫段程式碼來驗證一下:
Java程式碼public class ParentClass { public final void TestFinal() { System.out.println("父類--這是一個final方法"); }}public class SubClass extends ParentClass { /** * 子類無法重寫(override)父類的final方法,否則編譯時會報錯 */ // public void www.gzlij.com TestFinal() { // System.out.println("子類--重寫final方法"); // } public static void main(String[] args) { SubClass sc = new SubClass(); sc.TestFinal(); }}
這裡需要特殊說明的是,具有private訪問許可權的方法也可以增加final修飾,但是由於子無法繼承private方法,因此也無法重寫它。編譯器在處理private方法時,是按照final方來對待的,這樣可以提高該方法被呼叫時的效率。不過子類仍然可以定義同父類中private方法具有同樣結構的方法,但是這並不會產生重寫的效果,而且它們之間也不存在必然聯絡。