-
Final
(編程語言關鍵字)
鎖定
Final英文意思是:最終的; 決定性的; 不可更改的; 決賽; 結局; 期末考試。也是多種編程語言的關鍵字或保留字。
- 英語單詞
- final
- 漢語翻譯
- 最後的,決定性的;決賽,結局
- 詞 性
- 形容詞、名詞
- 複數形式
- finals(n.)
Final信息介紹
C++11標準提供了説明符final。
[1]
需要注意的是,C++11中的final不是關鍵字,而是説明符,這意味着您可以將它(在不引起混淆的情況下)將它作為標識符使用(為了兼容以前的代碼)。類似的説明符還有override。Java和AS3.0關鍵字final有“這是無法改變的”或者“終態的”含義,它可以修飾非抽象類、非抽象類成員方法和變量。你可能出於兩種理解而需要阻止改變:設計或效率。
FinalC++中
語法1:class Someclass final {...};
語法2:class Someclass {...type somefun(arg-list) final;...};
舉例如下:
#include<iostream> classX { private: charc; public: X():c('B'){} X(chararg):c(arg){} virtualvoidput()constfinal{std::cout<<c<<std::endl;} //final修飾了put()函數,使其不能被覆蓋 //... }; classY:publicX { private: inti; public: Y():i(0){} Y(intarg):i(arg){} //這裏不能有voidput();了,因為有了final説明符 //... }; classZfinal//final修飾Z類,您不能從Z類派生出一個類,而只能用於創建對象 { private: doubled; public: Z():d(0.0){} Z(doublearg):d(arg){} voidput()const{std::cout<<d<<std::endl;} //... }; intmain() { usingnamespacestd; charfinal='X';//可以這麼做 Xx(final); x.put();//輸出X Yy; y.put();//輸出B Zz(3.14159); z.put();//輸出3.14159 return0; }
FinalJava中
1、final類
final類不能被繼承,因此final類的成員方法沒有機會被覆蓋,默認都是final的。在設計類時候,如果這個類不需要有子類,類的實現細節不允許改變,並且確信這個類不會再被擴展,那麼就設計為final類。 final方法不能被子類的方法覆蓋,但可以被繼承。
2、final方法
如果一個類不允許其子類覆蓋某個方法,則可以把這個方法聲明為final方法。
使用final方法的原因有二:
第一、把方法鎖定,防止任何繼承類修改它的意義和實現。
第二、高效。編譯器在遇到調用final方法時候會轉入內嵌機制,大大提高執行效率。
3、final變量(常量)
用final修飾的成員變量表示常量,只能被賦值一次,賦值後值無法改變!
final修飾的變量有三種:靜態變量、實例變量和局部變量,分別表示三種類型的常量。
從下面的例子中可以看出,一旦給final變量初值後,值就不能再改變了。
另外,final變量定義的時候,可以先聲明,而不給初值,這種變量也稱為final空白,無論什麼情況,編譯器都確保空白final在使用之前必須被初始化。但是,final空白在final關鍵字final的使用上提供了更大的靈活性,為此,一個類中的final數據成員就可以實現依對象而有所不同,卻有保持其恆定不變的特徵。
4、final參數
當函數參數為final類型時,你可以讀取使用該參數,但是無法改變該參數的值。
注:父類的private成員方法是不能被子類方法覆蓋的,因此private類型的方法默認是final類型的。
final不能用於修飾構造方法。
示例:
public void f1(final int i){ } //i是final類型的,值不允許改變的.
- 詞條統計
-
- 瀏覽次數:次
- 編輯次數:11次歷史版本
- 最近更新: 呐爱情漂