# 什麼是final final是一個修飾子,專門用來「鎖定」被它修飾的東西,它可以使用在以下三種狀況下: 1. 修飾一個變數和函數內的參數,讓這個變數或參數變成「常數」(constant),使得它的值無法再被取代、更改。 2. 修飾一個方法(method),讓這個方法不能被其子類別給覆寫(override)掉。 3. 修飾一個類別(class),讓這個類別無法建立其子類別,就是把這個類別給「絕育」的意思,術語為「終止繼承」。 -------------------------------------------------------------------------------------- 以下先講解第1.點,也就是「常數」的應用。 我們知道「變數」(variable)裡面存放的是「變動值」,可以隨時以新值取代舊值。 而常數(constant)裡面存放的是固定值,不可以用新值取代舊值。若不希望之後此值被變動到,可以將之宣告為常數。宣告時在最前方加入「final」關鍵字,會宣告為常數,賦值一次後,不能再修改變更,否則會報錯,也就是說final型態不能重覆賦值。 另外習慣上,作為常數名稱的英文字母會全部使用大寫,例如:PI = 3.14162…。而若是有兩個單字,或兩個單字以上組成,則使用底線符號「 _ 」分隔開來。如:MAX_VALUE, REQUEST_ACTION_CODE。這雖然不是強制規定,但遵守一些約定俗成的語法,有助於提高程式的可讀性。 宣告常數的範例: // 分成兩行宣告: final int K; K = 100; //寫成一行宣告(較常用): final int K = 100; final修飾子: final的英文是「最終」的意思,之前說過「修飾子」可以想成是英文的形容詞,所以當一個變數前面加上final修飾子時,就代表這個變數的值從此以後不能再被修改。 例如寫: final int a = 3; 之後,若我們想要替換掉變數a的值,編譯器就會不讓我們這麼做。例如寫a = 7;,普通的情況下是變數a的值會被替換成7,但這時候因為有final修飾子,編譯器就會跳出錯誤訊息。或者也可以說,加上final修飾子的變數,就成為了常數(const)的意思。 而在一個class前面加上final,就代表將這個class內的變數(屬性)一口氣全部都成為final變數。並且,從此之後這個class也不能被繼承、衍生出它的子類別,就像被「絕育」了一樣。 例如: final class Animal { … … … } 使用final的場合通常會在大型的專案中,主導的程式設計師不希望其他人修改某些變數(屬性),或者不希望別人拿某個類別去繼承,就可以使用final修飾子。所以final修飾子主要也是用來管控權限、避免別人竄改的一種功能,可以把它想成「上鎖」。
×
Sign in
Email
Password
Forgot password
or
By clicking below, you agree to our
terms of service
.
Sign in via Facebook
Sign in via Twitter
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
New to HackMD?
Sign up