1. final在java里是什麼意思
final在java中的意思是表示最終的,無法改變的意思。
1.
final
定義數值表示這個數值是最終的,不可改變的,一旦改變是會出錯的,當用final作用於類的成員變數時,成員變數(注意是類的成員變數,局部變數只需要保證在使用之前被初始化賦值即可)必須在定義時或者構造器中進行初始化賦值,而且final變數一旦被初始化賦值之後,就不能再被賦值了。。
2.
final
定義方法表示這個方法是不能被重寫和重載的只能夠被子類繼承使用,使用final方法的原因有兩個。第一個原因是把方法鎖定,以防任何繼承類修改它的含義;第二個原因是效率。在早期的Java實現版本中,會將final
方法轉為內嵌調用。但是如果方法過於龐大,可能看不到內嵌調用帶來的任何性能提升。在最近的Java版本中,不需要使用final方法進行這些優化了。
3.
final
定義類便是這個類是最終的,是不能夠被繼承的,類中的方法也都是默認修飾了final方法,注意final類中的成員變數可以根據需要設為final。
2. JAVA,為什麼final類不能被繼承,如果定義為final的類該類裡面成員變數不特殊說明則是final類還是非final
這是final的規定。當將final用於類身上時,一個final類是無法被任何人繼承的,那也就意味著此類在一個繼承樹中是一個葉子類,並且此類的設計已被認為很完美而不需要進行修改或擴展。
對於final類中的成員,可以定義其為final,也可以不是final。而對於方法,由於所屬類為final的關系,自然也就成了final型的。也可以明確的給final類中的方法加上一個final,但這顯然沒有意義。
採用final方法的第二個理由是程序執行的效率。將一個方法設成final後,編譯器就可以把對那個方法的所有調用都置入「嵌入」調用里。
只要編譯器發現一個final方法調用,就會(根據它自己的判斷)忽略為執行方法調用機制而採取的常規代碼插入方法(將自變數壓入堆棧;跳至方法代碼並執行它;跳回來;清除堆棧自變數;最後對返回值進行處理)。
(2)java中的final類擴展閱讀
final關鍵字的基本用法:
1、修飾類
當用final修飾一個類時,表明這個類不能被繼承。也就是說,如果一個類你永遠不會讓他被繼承,就可以用final進行修飾。final類中的成員變數可以根據需要設為final,但是要注意final類中的所有成員方法都會被隱式地指定為final方法。
2、修飾方法
final修飾的方法表示此方法已經是「最後的、最終的」含義,亦即此方法不能被重寫(可以重載多個final修飾的方法)。此處需要注意的一點是:因為重寫的前提是子類可以從父類中繼承此方法,如果父類中final修飾的方法同時訪問控制許可權為private。
將會導致子類中不能直接繼承到此方法,因此,此時可以在子類中定義相同的方法名和參數,此時不再產生重寫與final的矛盾,而是在子類中重新定義了新的方法。
3、修飾變數
final成員變數表示常量,只能被賦值一次,賦值後值不再改變。當final修飾一個基本數據類型時,表示該基本數據類型的值一旦在初始化後便不能發生變化。
如果final修飾一個引用類型時,則在對其初始化之後便不能再讓其指向其他對象了,但該引用所指向的對象的內容是可以發生變化的。本質上是一回事,因為引用的值是一個地址,final要求值,即地址的值不發生變化。
3. java里final是什麼意思
final可以理解為最終的,例如在定義變數的時候加入final修飾,則表示這個變數只有在定義的時候初始化一次,以後不能再做初始化操作
4. 在java中一個類被聲明為final類型,表示了什麼意思
final
不可更改的
類定義為final時,就表明了你不打算繼承該類,而且也不也許別人這樣做。換句話說,出於某種考慮,你對該類的設計永不需要做任何變動,或者出於安全的考慮,你不希望他有子類
簡單說就是這個類只能用,不能修改