首頁 >Java >java教程 >Java修飾符abstract、static和final怎麼用

Java修飾符abstract、static和final怎麼用

WBOY
WBOY轉載
2023-04-26 09:46:141116瀏覽

修飾符abstract (抽象的)

一、abstract可以修飾類別

#(1) 被abstract修飾的類別稱為抽象類別
(2) 語法:

          abstract class 類別名稱{}

(3) 特點:抽象類別不能單獨建立對象,但是可以宣告引用
    #  #(4) 抽象類別可以定義成員變數和成員方法
(5) 抽象類別有建構方法,用於建立子類別物件時,jvm預設建立一個父類別物件;
    抽象的建構方法應用在jvm建立父類別物件時套用。

二、abstract可以修飾方法

(1) asbtract修飾的方法稱為抽象方法

(2) 語法:

    存取修飾符abstract  返回值類型方法名(形參列表);

    注意:abstract和存取修飾符沒有先後順序要求

(3) 特點:抽象方法只有聲明部分,沒有方法的實作部分(連{}都沒有,以; 結尾)
(4) 注意:抽象方法只能定義在抽象類別中;但是抽象類別中即可以定義抽象方法也可以定義非抽象方法

抽象類別的子類別:

(1) 語法:

    class 子類別名稱extends 抽象類別類別名稱{}

#( 2) 要求:如果子類別不想成為抽象類別,則必須覆寫抽象類別父類別中的所有抽象方法(目的:將抽象方法實作部分補上);

    如果子類別沒有覆寫父類別中所有抽象方法,必須定義為抽象類,同時不能建立物件
(3) 應用:抽象類別體現了多型的應用

    抽象類別名稱參考名稱= new 子類別名稱() ;  // 父類型的參考儲存了子類型的物件

修飾符之static? (靜態的) 

一、static可以修飾屬性

( 1) 被static修飾的屬性稱為靜態屬性、靜態變數、類別變數

    注意:成員變數分為:實例變數與靜態變數(或是靜態屬性、類別變數)
(2) 位置:定義在類別以內,方法以外,被static修飾
(3) 語法:

         存取修飾符static 資料型別變數名稱;

         存取修飾符static 資料型別變數與名稱變數=值值;

    注意:存取修飾符和static之間沒有先後順序要求,但是都必須在資料類型的前面

(4) 特點:靜態屬性是基於類別而存在,和建立多少對象無關,由所有物件共用
(5) 使用:
        a. 透過物件名稱.靜態屬性名稱
        b. 直接透過類別名稱.靜態屬性名稱 ——>建議
>建議

>建議

>建議

>建議

>

    注意:實例變數必須透過物件名稱.實例變數名稱進行存取


二、static可以修飾方法

(1) 被static修飾的方法稱為靜態方法

(2) 語法:

    存取修飾符static 傳回值型別方法名稱(形參考表){
            // 方法實作、方法符號# }

# | ##    注意:存取修飾符和static之間沒有先後順序要求    
(3) 使用:
    a.直接通過類別名稱.靜態方法名稱(實參); --》建議
   b.透過物件名稱.靜態方法(實參); -->不建議
(4) 靜態方法語法細節:
    a. 靜態方法中只能存取本類別的靜態成員(靜態屬性與靜態方法)
    b. 靜態方法中無法直接存取本類別的非靜態成員(實例變數非靜態方法)
    c. 靜態方法中不能this/super關鍵字
    d. 靜態方法能被子類別繼承
    e. 靜態方法只能被靜態方法覆蓋,靜態方法沒有體現多態的應用
(5) 靜態方法應用場景:通常將工具類別中方法設為靜態方法,為了方便使用者呼叫

Java修飾符abstract、static和final怎麼用

三、static可以修飾初始化程式碼區塊

(1) 被static修飾初始化程式碼區塊稱為靜態程式碼區塊
(2) 靜態程式碼區塊的位置:定義在類別以內,方法以為,被static修飾的{}

##        class 類別名稱{

             靜態程式碼區塊
               }
        }

(3) 作用:在類別載入的時候,依照與靜態屬性定義的先後順序完成靜態屬性的初始化工作   
(4) 類別載入:
    a. 概念:jvm第一次使用一個類別的時候,透過classPath找到類別對應的.class檔案;
            並且對.class檔案進行讀取該類別的資訊;
          /「套件名稱、##      方法、成員方法等);
            將讀取資訊儲存到jvm記憶體中,其中一個類別只會一次類別載入。
            
    b. 類別載入的時機:(什麼稱為jvm第一次使用一個類別)
           I. 第一個存取該類別靜態成員(靜態屬性與靜態方法)   一次建立該類別物件:先完成類別載入;再完成物件的建立
           III. 子類別載入,先導致其父類別載入:先加在父類別,再載入子類別
         一次呼叫子類別靜態屬性或靜態方法
             ② 第一次建立子類別物件:先進行類別載入,再完成物件的建立
                類別載入
           
               
                   與物件建立時:先完成父類別物件的創建,而最終子類別物件的建立 ##inal##修飾修飾變數

final可以修飾變數(局部變數、成員變數—>實例變數與靜態變數)

(1) 特徵:被final修飾的變量,作用範圍內常數,只允許一次賦值,可以發多使用 

    注意:final修飾變數一旦賦值,無法修改

(2) 語法:


##    存取修飾符final 資料類型變數名= 值;

(3) final修飾的實例不再具有預設值,開發人員對其賦值的機會如下:
        a. 定義的時候對其初始化,賦值

                  final int a = 3;


##           class A{

                       final int a ;
                       public A(int a){

                            }

                   }

(4) final修飾的靜態變數將其賦值的機會如下:
        a. 定義時對其初始化,賦值

        b. 使用靜態程式碼區塊對其初始化

## c         final static int n;
                    static{
                    }
                }

(5) final修飾的引用,代表引用中儲存物件不能改變

#二、final可以修飾方法

可以被子類別繼承,但是不允許子類別覆寫.


#三、final可以修飾屬性

被final修飾的類別不能被繼承,即沒有子類別.

以上是Java修飾符abstract、static和final怎麼用的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文轉載於:yisu.com。如有侵權,請聯絡admin@php.cn刪除