一.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來實現