java中final與static的使用場景


ほのかと埋まる

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一起使用修飾成員變量或方法時,可以理解為“全局常量”,均可通過類名直接訪問。

版權聲明:本文為博主原創文章,未經博主允許不得轉載。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM