? ? 這個問題很困擾人,一直也沒注意,但是今天決定好好研究研究。
static關鍵字
? ? ? static 關鍵字可以用來修飾類的變量,方法和內部類。static 是靜態的意思,也是全局的意思它定義的東西,屬于全局與類相關,不與具體實例相關。就是說它調用的時候,只是 ClassName.method(),而不是 new ClassName().method()。new ClassName()不就是一個對象了嗎?static 的變量和方法不可以這樣調用的。它不與具體的實例有關。
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的域只占據一段不能改變的存儲空間,只有一份。
java中final關鍵字的使用及static final 和final的區別 - iamdll的專欄
- 博客頻道 - CSDN.NET
static和final的區別(轉載) - The灬Answer - 博客園
java中final關鍵字的使用及static final 和final的區別 - iamdll的專欄
- 博客頻道 - CSDN.NET