首頁> Java> java教程> 主體

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

WBOY
發布: 2023-04-26 09:46:14
轉載
1020 人瀏覽過

修飾符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
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!