溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

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

發(fā)布時間:2022-04-11 11:07:32 來源:億速云 閱讀:144 作者:iii 欄目:開發(fā)技術

本文小編為大家詳細介紹“Java修飾符abstract、static和final怎么用”,內容詳細,步驟清晰,細節(jié)處理妥當,希望這篇“Java修飾符abstract、static和final怎么用”文章能幫助大家解決疑惑,下面跟著小編的思路慢慢深入,一起來學習新知識吧。

修飾符abstract (抽象的)

一、abstract可以修飾類

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

          abstract class 類名{}

(3) 特點:抽象類不能單獨創(chuàng)建對象,但是可以聲明引用
          抽象類類名  引用名;
(4) 抽象類可以定義成員變量和成員方法
(5) 抽象類有構造方法,用于創(chuàng)建子類對象時,jvm默認創(chuàng)建一個父類對象;
    抽象的構造方法應用在jvm創(chuàng)建父類對象時應用。

二、abstract可以修飾方法

(1) 被asbtract修飾的方法被稱為抽象方法
(2) 語法:

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

    注意:abstract和訪問修飾符沒有先后順序要求
(3) 特點:抽象方法只有聲明部分,沒有方法的實現(xiàn)部分(連{}都沒有,以 ; 結尾)
(4) 注意:抽象方法只能定義在抽象類中;但是抽象類中即可以定義抽象方法也可以定義非抽象方法

抽象類的子類:

(1) 語法:

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

(2) 要求:如果子類不想成為抽象類,則必須覆蓋抽象類父類中的所有抽象方法(目的:將抽象方法實現(xiàn)部分補上);
    如果子類沒有覆蓋父類中所有抽象方法,必須定義為抽象類,同時不能創(chuàng)建對象
(3) 應用:抽象類體現(xiàn)了多態(tài)的應用

    抽象類類名 引用名 = new 子類類名();  // 父類型的引用存儲了子類型的對象

修飾符之static? (靜態(tài)的) 

一、static可以修飾屬性

(1) 被static修飾的屬性稱為靜態(tài)屬性、靜態(tài)變量、類變量
    注意:成員變量分為:實例變量和靜態(tài)變量(或是靜態(tài)屬性、類變量)
(2) 位置:定義在類以內,方法以外,被static修飾
(3) 語法:

         訪問修飾符 static 數(shù)據(jù)類型 變量名;
         訪問修飾符 static 數(shù)據(jù)類型 變量名=值;

    注意:訪問修飾符和static之間沒有先后順序要求,但是都必須在數(shù)據(jù)類型的前面
(4) 特點:靜態(tài)屬性基于類而存在,和創(chuàng)建多少對象無關,被所有對象都共享
(5) 使用:
        a. 通過 對象名.靜態(tài)屬性名
        b. 直接通過 類名.靜態(tài)屬性名  ——>建議

    注意:實例變量必須通過 對象名.實例變量名 進行訪問

二、static可以修飾方法

(1) 被static修飾的方法稱為靜態(tài)方法
(2) 語法:

    訪問修飾符 static 返回值類型 方法名(形參列表){
            // 方法實現(xiàn)、方法體
    }

    注意:訪問修飾符和 static之間沒有先后順序要求    
(3) 使用:
    a. 直接通過 類名.靜態(tài)方法名(實參); --》建議
    b. 通過對象名.靜態(tài)方法(實參); -->不建議
(4) 靜態(tài)方法語法細節(jié):
    a. 靜態(tài)方法中只能訪問本類的靜態(tài)成員(靜態(tài)屬性和靜態(tài)方法)
    b. 靜態(tài)方法中不能直接訪問本類的非靜態(tài)成員(實例變量+非靜態(tài)方法)
    c. 靜態(tài)方法中不能this/super關鍵字
    d. 靜態(tài)方法能被子類繼承
    e. 靜態(tài)方法只能被靜態(tài)方法覆蓋,靜態(tài)方法沒有體現(xiàn)多態(tài)的應用
(5) 靜態(tài)方法應用場景:通常將工具類中方法設置為靜態(tài)方法,為了方便使用者調用

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

三、static可以修飾初始化代碼塊

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

        class 類名{
               static{
                      // 靜態(tài)代碼塊
               }
        }

(3) 作用:在類加載的時候,按照和靜態(tài)屬性定義的先后順序完成對靜態(tài)屬性的初始化工作    
(4) 類加載:
    a. 概念:jvm第一次使用一個類的時候,通過classPath找到類對應的.class文件;
            并且對.class文件進行讀取該類的信息;
            (包名、類名、父類、屬性、構造方法、成員方法等);
            將讀取信息保存到jvm內存中,一個類只一次類加載。
            
    b. 類加載的時機:(什么叫jvm第一次使用一個類)
           I. 第一個訪問該類靜態(tài)成員(靜態(tài)屬性和靜態(tài)方法)
           II. 第一次創(chuàng)建該類對象:先完成類加載;再完成對象的創(chuàng)建
           III. 子類類加載,先導致其父類類加載:先加在父類,再加載子類
             ① 第一次調用子類靜態(tài)屬性或靜態(tài)方法
             ② 第一次創(chuàng)建子類對象:先進行類加載,再完成對象的創(chuàng)建
                   加載:先完成父類的類加載,再完成子類的類加載
           
                   創(chuàng)建對象 :先完成父類對象的創(chuàng)建,再子類對象的創(chuàng)建

修飾符之final? (最終的)

一、final可以修飾變量

final可以修飾變量(局部變量、成員變量—>實例變量和靜態(tài)變量)

(1) 特點:被final修飾的變量,作用范圍內常量,只允許一次賦值,可以被發(fā)多使用 
    注意:final修飾變量一旦賦值,不能修改

(2) 語法:

    訪問修飾符 final 數(shù)據(jù)類型 變量名 = 值;

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

                  final int a = 3;

          b. 利用構造方法完成賦值

                   class A{
                       final int a ;
                       public A(int a){
                             this.a=a;
                       }
                   }

(4) final修飾的靜態(tài)變量不再具有默認值,開發(fā)人員對其賦值的機會如下:
        a. 在定義時對其初始化,賦值
        b. 利用靜態(tài)代碼塊對其初始化

                class A{
                    final static int n;
                    static{
                        n = 5;
                    }
                }

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

二、final可以修飾方法

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

三、final可以修飾屬性

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

讀到這里,這篇“Java修飾符abstract、static和final怎么用”文章已經(jīng)介紹完畢,想要掌握這篇文章的知識點還需要大家自己動手實踐使用過才能領會,如果想了解更多相關內容的文章,歡迎關注億速云行業(yè)資訊頻道。

向AI問一下細節(jié)

免責聲明:本站發(fā)布的內容(圖片、視頻和文字)以原創(chuàng)、轉載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權內容。

AI