String 類爲何是final

1、什麼是final

final 意思是「最終的,最後的」,我認爲是不可變的,他能夠修飾類,變量和方法。因此能夠認爲他所修飾的類,變量和方法都是不能改變的。安全

1.final修飾類spa

被final修飾的類不能被繼承,即他不能擁有本身的子類,不然會報錯。對象

首先 建立一個用fianl 修飾的父類Test繼承

而後建立一個子類test 繼承Testtest

點進去看一下報警信息,效率

意思是類test不能被final修飾的類Test。基礎

2.final修飾方法變量

被final 修飾的方法不能被重寫,可是:權限

重寫的前提是子類能夠從父類中繼承此方法,因此當父類中被final修飾的方法的訪問權限爲private時,子類中就能夠重寫此方法。程序

(一)父類中方法控制權限爲public

首先在父類中建立一個方法,並用final修飾

而後在子類中中重寫work方法,能夠看到當子類重寫父類中final修飾的方法是,報錯了,報錯信息以下:

即子類不能重寫父類中被final修飾的方法

(二)父類中方法控制權限爲private

final修飾的變量,不管是類屬性,對象屬性,形參仍是局部變量,都須要進行初始化操做。

(1)修飾變量

能夠看到被final修飾的變量報錯了,是由於final修飾的字段fa沒有被初始化,因此當變量被final修飾是要賦值初始化,當初始化以後就不會報錯。

(2)修飾類屬性

也是須要初始化的

2、String 類爲何是final

結合以上的基礎知識,咱們來分析一下爲什String類是final的?

這個例子標明,讓一個普通類繼承String類,結果發現報錯了.

即Test不能是final類String的子類,這裏已經很明顯地看出String類是final的,可是究竟是爲啥子呢?

(1)因爲String類不能被繼承,因此就不會沒修改,這就避險了由於繼承引發的安全隱患

(2)String類在程序中出現的頻率較高,爲了不安全隱患,它每次出現是都用final來修飾,這無疑會下降程序的執行效率,因此乾脆直接將其設爲final提升效率

相關文章
相關標籤/搜索