Java final 修飾符

final有“終態(tài)”和“不可變”的意思,它可以修飾非抽象類、非抽象方法、變量和方法參數(shù)。

一、final類

用final修飾的類沒有子類,所以不能夠被繼承。
在設(shè)計(jì)類的時(shí)候,如果這個(gè)類不需要有子類,類的實(shí)現(xiàn)細(xì)節(jié)不允許被改變,并且確信這個(gè)類不會(huì)被擴(kuò)展,那么就設(shè)計(jì)為final類。

二、final方法

final方法不能被子類覆蓋,但可以被繼承。

  1. public和protected修飾的final方法
    由于用public和protected修飾的final方法對(duì)于子類而言具有可見性,所以子類不能覆蓋它們。
  2. private修飾的final方法
    由于private修飾的方法對(duì)于子類而言不具有可見性,所以子類再實(shí)現(xiàn)一個(gè)簽名一樣的方法,只能稱之為拓展,而不是覆蓋。
  3. default的final方法
    沒有用訪問修飾符修飾的final方法,在本包子類中,不能覆蓋,因?yàn)榭梢姡欢谄渌淖宇愔校捎诓豢梢姡梢酝卣挂粋€(gè)簽名一樣的方法。
三、final變量

用final修飾的變量相當(dāng)于常量,只能賦值一次,以后不能再修改。final變量可以在聲明的時(shí)候直接初始化,也可以先聲明,而不賦初值,這種變量也稱為final空白。

  1. final靜態(tài)變量
    這種final空白要在static代碼塊里進(jìn)行初始化。
  2. final成員變量
    要在構(gòu)造函數(shù)里初始化。
  3. final局部變量
    在成員方法中,只能賦值一次。
四、final參數(shù)

方法的參數(shù)其實(shí)也是一種局部變量,它的作用域就是當(dāng)前方法,當(dāng)參數(shù)被final修飾時(shí),我們可以讀取該參數(shù),但是無法改變參數(shù)值。

五、final和static

final static方法沒有意義,因?yàn)閟tatic方法本來就不會(huì)被子類覆蓋。
final static變量相當(dāng)于“全局常量”。

六、final和abstract

不能連用,final不允許子類覆蓋,而abstract則要求子類重寫它,互相矛盾。

轉(zhuǎn)載請(qǐng)注明如下內(nèi)容:

文章來自簡(jiǎn)書,作者:就是楊宗
原文鏈接:http://www.lxweimin.com/p/2f1763e72ecf

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

推薦閱讀更多精彩內(nèi)容

  • 1. Java基礎(chǔ)部分 基礎(chǔ)部分的順序:基本語法,類相關(guān)的語法,內(nèi)部類的語法,繼承相關(guān)的語法,異常的語法,線程的語...
    子非魚_t_閱讀 31,778評(píng)論 18 399
  • (一)Java部分 1、列舉出JAVA中6個(gè)比較常用的包【天威誠(chéng)信面試題】 【參考答案】 java.lang;ja...
    獨(dú)云閱讀 7,143評(píng)論 0 62
  • 1.import static是Java 5增加的功能,就是將Import類中的靜態(tài)方法,可以作為本類的靜態(tài)方法來...
    XLsn0w閱讀 1,267評(píng)論 0 2
  • 1、.java源文件: 一個(gè)以”.java“為后綴的源文件:只能有一個(gè)與文件名相同的類,可以包含其他類。 2、類方...
    Hughman閱讀 1,524評(píng)論 1 9
  • 1、一個(gè)".java"源文件中是否可以包括多個(gè)類(不是內(nèi)部類)?有什么限制?答:可以有多個(gè)類,但只能有一個(gè)publ...
    岳小川閱讀 970評(píng)論 0 2