Java中static和final的區別

static關鍵字

static 關鍵字能夠用來修飾類的變量,方法和內部類。static 是靜態的意思,也是全局的意思它定義的東西,屬於全局與類相關,不與具體實例相關。就是說它調用的時候,只是 ClassName.method(),而不是 new ClassName().method()。new ClassName()不就是一個對象了嗎?static 的變量和方法不能夠這樣調用的。它不與具體的實例有關。java

final關鍵字

final 關鍵字有三個東西能夠修飾的。修飾類,方法,變量。  詳細解釋一下:面試

(1)在類的聲明中使用 final對象

使用了 final 的類不能再派生子類,就是說不能夠被繼承了。有些 java 的面試題裏面,問 String 可不能夠被繼承。答案是不能夠,由於 java.lang.String是一個 final 類。這能夠保證 String 對象方法的調用確實運行的是 String 類的方法,而不是經其子類重寫後的 方法。繼承

(2)在方法聲明中使用 final編譯器

被定義爲 final 的方法不能被重寫了,若是定義類爲 final 的話,是全部的方法都不能重寫。而咱們只須要類中的某幾個方法,不能夠被重寫,就在方法前加 final 了。並且定義爲 final 的方法執行效率要高的啊。編譯

(3)在變量聲明中使用 final效率

這樣的變量就是常量了,在程序中這樣的變量不能夠被修改的。修改的話編譯器會抱錯的。並且執行效率也是比普通的變量要高。final 的變量若是沒有賦予初值的話,其餘方法就必需給他賦值,但只能賦值一次。變量

注意:子類不能重寫父類的靜態方法哦,也不能把父類不是靜態的重寫成靜態的方法。想隱藏父類的靜態方法的話,在子類中聲明和父類相同的方法就好了。程序

static final爲何要一塊兒用:方法

final與static final的區別是:final在一個對象類惟一,static final在多個對象中都惟一;

一個既是static又是final的域只佔據一段不能改變的存儲空間,只有一份。

相關文章
相關標籤/搜索