您好,登錄后才能下訂單哦!
本文小編為大家詳細介紹“Java修飾符abstract、static和final怎么用”,內容詳細,步驟清晰,細節處理妥當,希望這篇“Java修飾符abstract、static和final怎么用”文章能幫助大家解決疑惑,下面跟著小編的思路慢慢深入,一起來學習新知識吧。
(1) 被abstract修飾的類稱為抽象類
(2) 語法:
abstract class 類名{}
(3) 特點:抽象類不能單獨創建對象,但是可以聲明引用
抽象類類名 引用名;
(4) 抽象類可以定義成員變量和成員方法
(5) 抽象類有構造方法,用于創建子類對象時,jvm默認創建一個父類對象;
抽象的構造方法應用在jvm創建父類對象時應用。
(1) 被asbtract修飾的方法被稱為抽象方法
(2) 語法:
訪問修飾符 abstract 返回值類型 方法名(形參列表);
注意:abstract和訪問修飾符沒有先后順序要求
(3) 特點:抽象方法只有聲明部分,沒有方法的實現部分(連{}都沒有,以 ; 結尾)
(4) 注意:抽象方法只能定義在抽象類中;但是抽象類中即可以定義抽象方法也可以定義非抽象方法
抽象類的子類:
(1) 語法:
class 子類類名 extends 抽象類類名{}
(2) 要求:如果子類不想成為抽象類,則必須覆蓋抽象類父類中的所有抽象方法(目的:將抽象方法實現部分補上);
如果子類沒有覆蓋父類中所有抽象方法,必須定義為抽象類,同時不能創建對象
(3) 應用:抽象類體現了多態的應用
抽象類類名 引用名 = new 子類類名(); // 父類型的引用存儲了子類型的對象
(1) 被static修飾的屬性稱為靜態屬性、靜態變量、類變量
注意:成員變量分為:實例變量和靜態變量(或是靜態屬性、類變量)
(2) 位置:定義在類以內,方法以外,被static修飾
(3) 語法:
訪問修飾符 static 數據類型 變量名;
訪問修飾符 static 數據類型 變量名=值;
注意:訪問修飾符和static之間沒有先后順序要求,但是都必須在數據類型的前面
(4) 特點:靜態屬性基于類而存在,和創建多少對象無關,被所有對象都共享
(5) 使用:
a. 通過 對象名.靜態屬性名
b. 直接通過 類名.靜態屬性名 ——>建議
注意:實例變量必須通過 對象名.實例變量名 進行訪問
(1) 被static修飾的方法稱為靜態方法
(2) 語法:
訪問修飾符 static 返回值類型 方法名(形參列表){
// 方法實現、方法體
}
注意:訪問修飾符和 static之間沒有先后順序要求
(3) 使用:
a. 直接通過 類名.靜態方法名(實參); --》建議
b. 通過對象名.靜態方法(實參); -->不建議
(4) 靜態方法語法細節:
a. 靜態方法中只能訪問本類的靜態成員(靜態屬性和靜態方法)
b. 靜態方法中不能直接訪問本類的非靜態成員(實例變量+非靜態方法)
c. 靜態方法中不能this/super關鍵字
d. 靜態方法能被子類繼承
e. 靜態方法只能被靜態方法覆蓋,靜態方法沒有體現多態的應用
(5) 靜態方法應用場景:通常將工具類中方法設置為靜態方法,為了方便使用者調用
(1) 被static修飾初始化代碼塊稱為靜態代碼塊
(2) 靜態代碼塊的位置:定義在類以內,方法以為,被static修飾的{}
class 類名{
static{
// 靜態代碼塊
}
}
(3) 作用:在類加載的時候,按照和靜態屬性定義的先后順序完成對靜態屬性的初始化工作
(4) 類加載:
a. 概念:jvm第一次使用一個類的時候,通過classPath找到類對應的.class文件;
并且對.class文件進行讀取該類的信息;
(包名、類名、父類、屬性、構造方法、成員方法等);
將讀取信息保存到jvm內存中,一個類只一次類加載。
b. 類加載的時機:(什么叫jvm第一次使用一個類)
I. 第一個訪問該類靜態成員(靜態屬性和靜態方法)
II. 第一次創建該類對象:先完成類加載;再完成對象的創建
III. 子類類加載,先導致其父類類加載:先加在父類,再加載子類
① 第一次調用子類靜態屬性或靜態方法
② 第一次創建子類對象:先進行類加載,再完成對象的創建
加載:先完成父類的類加載,再完成子類的類加載
創建對象 :先完成父類對象的創建,再子類對象的創建
final可以修飾變量(局部變量、成員變量—>實例變量和靜態變量)
(1) 特點:被final修飾的變量,作用范圍內常量,只允許一次賦值,可以被發多使用
注意:final修飾變量一旦賦值,不能修改
(2) 語法:
訪問修飾符 final 數據類型 變量名 = 值;
(3) final修飾的實例不再具有默認值,開發人員對其賦值的機會如下:
a. 定義的時候對其初始化,賦值
final int a = 3;
b. 利用構造方法完成賦值
class A{
final int a ;
public A(int a){
this.a=a;
}
}
(4) final修飾的靜態變量不再具有默認值,開發人員對其賦值的機會如下:
a. 在定義時對其初始化,賦值
b. 利用靜態代碼塊對其初始化
class A{
final static int n;
static{
n = 5;
}
}
(5) final修飾的引用,代表引用中存儲對象不能改變
可以被子類繼承,但是不允許子類覆蓋.
被final修飾的類不能被繼承,即沒有子類.
讀到這里,這篇“Java修飾符abstract、static和final怎么用”文章已經介紹完畢,想要掌握這篇文章的知識點還需要大家自己動手實踐使用過才能領會,如果想了解更多相關內容的文章,歡迎關注億速云行業資訊頻道。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。