final和static

 一.final總結

  1.final修飾類:表示該類不可繼承

  final不能修飾interface接口

  2.final修飾方法:表示該方法不能被子類覆蓋(即子類不能重寫父類的final方法,可以繼承)

  final不能修飾構造函數

  3.final修飾字段屬性:表示屬性值第一次初始化後不能被修改

  final屬性可以直接初始化或在構造函數中初始化

  如果屬性是直接初始化,則其值不能被其它函數(包括構造函數)修改

  4.final修飾函數參數

  參數值不能被函數修改

  5.final修飾函數中的局部變量

  局部變量被第一次初始化後不能被修改

  public void hello() {

  final String name;

  name = "hi";       //ok

  name = "hello";    //error

  }

  使用final的意義:

  第一,爲方法“上鎖”,防止任何繼承類改變它的本來含義和實現。設計程序時,若希望一個方法的行爲在繼承期間保持不變,而且不可被覆蓋或改寫,就可以採取這種做法。

  第二,提高程序執行的效率,將一個方法設成final後,編譯器就可以把對那個方法的所有調用都置入“嵌入”調用裏(內嵌機制)。

  二.static總結

  1.static修飾成員函數:該成員函數不能使用this對象

  static不能修飾構造函數

  static不能修飾函數參數

  static不能修飾局部成員變量

  2.static修飾成員字段

  當類被虛擬機加載時,首先按照字段聲明的先後順序對static成員字段進行初始化

  3.static修飾語句塊

  當類被虛擬機加載時,按照聲明順序先後初始化static成員字段和static語句塊

  static所修飾的方法和字段是隻屬於類,所有對象共享。

  在static所修飾的函數和語句塊中不能使用非static成員字段。

  在Java不能直接定義全局變量,是通過static來實現的

  在Java中沒有const,不能直接定義常量,通過static final來實現

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章