Final(程式語言關鍵字)

本詞條是多義詞,共4個義項
更多義項 ▼ 收起列表 ▲

Final英文意思是:最終的; 決定性的; 不可更改的; 決賽; 結局; 期末考試。也是多種程式語言的關鍵字或保留字。

基本介紹

  • 英語單詞:final
  • 漢語翻譯:最後的,決定性的;決賽,結局
  • 詞性:形容詞、名詞
  • 複數形式:finals(n.)
介紹,C++中,Java中,

介紹

C++11標準提供了說明符final。需要注意的是,C++11中的final不是關鍵字,而是說明符,這意味著您可以將它(在不引起混淆的情況下)將它作為標識符使用(為了兼容以前的代碼)。類似的說明符還有override。Java和AS3.0關鍵字final有“這是無法改變的”或者“終態的”含義,它可以修飾非抽象類、非抽象類成員方法和變數。你可能出於兩種理解而需要阻止改變:設計或效率。

C++中

C++11標準提供了說明符final,用於阻止派生類覆蓋特定的虛方法。或是阻止一個類成為基類
語法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();//輸出XYy;y.put();//輸出BZz(3.14159);z.put();//輸出3.14159return0;}

Java中

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類型的,值不允許改變的.

相關詞條

熱門詞條

聯絡我們