# 什麼是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
Sign in via Google
Sign in via Facebook
Sign in via X(Twitter)
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
Continue with a different method
New to HackMD?
Sign up
By signing in, you agree to our
terms of service
.