(JavaSE)十二 final關鍵字

2021-08-21 04:29:11 字數 1939 閱讀 6507

為什麼要使用final 修飾符?

繼承關係最大弊端是破壞封裝:子類能訪問父類的實現細節,而且可以通過方法覆蓋的形式修改實現細節.

final最終的含義是 「最終的,不可改變的」 ,它可以修飾非抽象類、非抽象的方法和變數。

注意:構造方法不能用final修飾,因為構造方法不能被繼承,肯定就是最終的。

表示最終類,不能再有子類

什麼類可以定義成抽象類?

1)某個類不是專門為繼承而設計的

2)出於安全考慮,類的實現細節不能改變,不准修改源**

3)確信該類不會再被擴充套件

錯誤展示:

final class superclass

class subclass extends superclass

最終的方法,方法不能被子類覆蓋

什麼時候方法需要final類?

1)在父類中提供的統一方法骨架,不准子類通過方法覆蓋來修改,此時用final修飾。模板方法設計模式

2)在構造器中呼叫的方法(初始化方法),一般使用final修飾

注意:final修飾的方法,子類可以呼叫,但是不能覆蓋

錯誤展示:

class superclass

}class subclass extends superclass

}

最終的變數,表示常量,該變數只能賦值一次,不能再賦值

final是唯一可以修飾區域性變數的修飾符

注意:1)final變數必須顯示的指定初始值,系統不會為final欄位初始化。

2)final變數一旦被賦予初始值,就不能再被重新賦值。

3)常量名規範:常量名符合識別符號,單詞全部使用大寫字母,如果是多個單詞組成

,單詞間使用

下劃線隔開。

例如:int型別的最大值:  final int

max_value= ....;

補充概念

:全域性靜態常量:

public  static  final

修飾的變數

,直接使用類名呼叫即可.

舉個面試題的例子:

final修飾的引用型別變數到底表示引用的位址不能改變,還是引用空間中的資料不能改變?

final修飾基本型別變數:

表示該變數的值不能改變,即不能用「=」號重新賦值。

final修飾引用型別變數:表示該變數的

引用的位址不能變

,而不是引用位址裡的內容不能變。

錯誤例子:

class demo

}

什麼時候用常量?

當在程式中

,多個地方使用到共同的資料

,且該資料不會改變

,此時我們專門定義全域性的常量,

一般的,

我們在開發中會專門定義乙個常量類

,專門用來儲存常量資料.

常量類:

class consts
常量分類:

1):字面值常量

(直接給出的資料值/直接量)

:比如:整數常量1,2,3,小數常量3.14,布林常量false,true等。

2):定義的final變數:   .

JavaSE之final關鍵字

目錄 一 概念 二 修飾範圍 將方法或類宣告為final,主要目的是 確保他們不會在子類中改變語義。有些類在描述完之後,不想被繼承,或者有些類中的部分方法功能是固定的,不想讓子類重寫。就可以使用final關鍵字解決,它可以用來修飾類,類的成員,以及區域性變數。例如string類被final修飾,這意...

JavaSE筆記之 final關鍵字》

可能使用到final的三種情況 資料 方法 類 一 資料 final使基本資料型別的資料為常量,不可改變 使引用恆定不變,當在引數中使用final時,引用在方法體內不可改變。我們不能因為某資料時final的就認為在編譯時可以知道它的值,在執行時使用隨機生成也可初始化。final static int...

final關鍵字 final是最終的

final關鍵字 final是最終的 1.final修飾特點 a.修飾類,類不能被繼承 b.修飾變數,變數就變成了常量,修飾基本資料類 final int num 10 修飾引用資料型別變數只能始終指向乙個物件,不能再指向其他物件 即基本型別,是值不能被改變 報錯無法為最終變數num分配值 引用型別...