
final
Java關鍵詞final有“無法改變”的含義,主要用於修飾非抽象類、方法或者變量。使用時注意:
- final類不能被繼承,沒有子類,final類中的方法默認是final的。
- final方法不能被子類的方法覆蓋,但可以被繼承。
- final成員變量表示常量,只能被賦值一次,賦值后值不再改變。
- final不能用於修飾構造方法。
- 父類的private成員方法不能被子類使用,故private類型方法默認為final類型。
- final類:
final類無法被繼承,故當需要一個完全封裝、無法改變的類時,可以使用final修飾增強安全性。 - final方法:
同final類,當類中方法不允許子類覆蓋時,則可以將其聲明為final方法。主要用於將方法鎖定,防止子類修改。1 public class TestFinal { 2 //public方法 3 public void test_01() { 4 System.out.println("01"); 5 } 6 //增加final修飾 7 public final void test_02() { 8 System.out.println("02"); 9 } 10 //private方法 11 private void test_03() { 12 System.out.println("03"); 13 } 14 } 15 16 public class Test extends TestFinal { 17 //覆蓋父類方法test_01 18 public void test_01() { 19 System.out.println("Change"); 20 } 21 public static void main(String[] args) { 22 Test t = new Test(); 23 t.test_01(); //已被覆蓋,輸出“change” 24 t.test_02(); //由於有final修飾符,此方法無法覆蓋,輸出“02” 25 //t.test_03(); //由於為private方法,不能直接調用該方法 26 } 27 }
- final變量
通常用final修飾的成員變量表示常量,一般修飾三種類型的變量:靜態變量、實例變量和局部變量。 - final參數
函數參數使用final修飾符時,則只能讀取該參數,不能改變。
static
static一般表示“靜態”的意思,可修飾成員變量和方法,也可形成靜態static代碼塊。另外注意Java中沒有全局變量的概念。
被static修飾的成員變量或方法獨立於該類的對象,只要該類被加載,可以在對象創建即實例化之前訪問。
- 靜態變量
被static修飾的變量即為靜態變量,當JVM加載類后,可以通過類名直接訪問,類的所有實例共享一個static變量。 - 靜態方法
靜態方法可以直接通過類名調用,但是不能直接訪問所屬類的實例變量和方法,只能訪問所屬類的靜態變量和方法,這是因為實例成員只與特定對象關聯。 - 靜態代碼塊
為類中獨立於類成員的static語句塊,不在任何方法體內,當JVM加載類時,就會執行靜態代碼塊,無需等待實例化,static語句塊可以多個,JVM會按照它們的先后順序依次執行。
static和final一起時有什么作用
static final一起使用修飾成員變量或方法時,可以理解為“全局常量”,均可通過類名直接訪問。
版權聲明:本文為博主原創文章,未經博主允許不得轉載。
