Java修飾符abstract與static及final的精華總結(jié)
修飾符abstract (抽象的)
一、abstract可以修飾類
(1) 被abstract修飾的類稱為抽象類
(2) 語法:
abstract class 類名{}
(3) 特點(diǎn):抽象類不能單獨(dú)創(chuàng)建對象,但是可以聲明引用
抽象類類名 引用名;
(4) 抽象類可以定義成員變量和成員方法
(5) 抽象類有構(gòu)造方法,用于創(chuàng)建子類對象時(shí),jvm默認(rèn)創(chuàng)建一個(gè)父類對象;
抽象的構(gòu)造方法應(yīng)用在jvm創(chuàng)建父類對象時(shí)應(yīng)用。
二、abstract可以修飾方法
(1) 被asbtract修飾的方法被稱為抽象方法
(2) 語法:
訪問修飾符 abstract 返回值類型 方法名(形參列表);
注意:abstract和訪問修飾符沒有先后順序要求
(3) 特點(diǎn):抽象方法只有聲明部分,沒有方法的實(shí)現(xiàn)部分(連{}都沒有,以 ; 結(jié)尾)
(4) 注意:抽象方法只能定義在抽象類中;但是抽象類中即可以定義抽象方法也可以定義非抽象方法
抽象類的子類:
(1) 語法:
class 子類類名 extends 抽象類類名{}
(2) 要求:如果子類不想成為抽象類,則必須覆蓋抽象類父類中的所有抽象方法(目的:將抽象方法實(shí)現(xiàn)部分補(bǔ)上);
如果子類沒有覆蓋父類中所有抽象方法,必須定義為抽象類,同時(shí)不能創(chuàng)建對象
(3) 應(yīng)用:抽象類體現(xiàn)了多態(tài)的應(yīng)用
抽象類類名 引用名 = new 子類類名(); // 父類型的引用存儲了子類型的對象
修飾符之static (靜態(tài)的)
一、static可以修飾屬性
(1) 被static修飾的屬性稱為靜態(tài)屬性、靜態(tài)變量、類變量
注意:成員變量分為:實(shí)例變量和靜態(tài)變量(或是靜態(tài)屬性、類變量)
(2) 位置:定義在類以內(nèi),方法以外,被static修飾
(3) 語法:
訪問修飾符 static 數(shù)據(jù)類型 變量名;
訪問修飾符 static 數(shù)據(jù)類型 變量名=值;
注意:訪問修飾符和static之間沒有先后順序要求,但是都必須在數(shù)據(jù)類型的前面
(4) 特點(diǎn):靜態(tài)屬性基于類而存在,和創(chuàng)建多少對象無關(guān),被所有對象都共享
(5) 使用:
a. 通過 對象名.靜態(tài)屬性名
b. 直接通過 類名.靜態(tài)屬性名 ——>建議
注意:實(shí)例變量必須通過 對象名.實(shí)例變量名 進(jìn)行訪問
二、static可以修飾方法
(1) 被static修飾的方法稱為靜態(tài)方法
(2) 語法:
訪問修飾符 static 返回值類型 方法名(形參列表){
// 方法實(shí)現(xiàn)、方法體
}
注意:訪問修飾符和 static之間沒有先后順序要求
(3) 使用:
a. 直接通過 類名.靜態(tài)方法名(實(shí)參); --》建議
b. 通過對象名.靜態(tài)方法(實(shí)參); -->不建議
(4) 靜態(tài)方法語法細(xì)節(jié):
a. 靜態(tài)方法中只能訪問本類的靜態(tài)成員(靜態(tài)屬性和靜態(tài)方法)
b. 靜態(tài)方法中不能直接訪問本類的非靜態(tài)成員(實(shí)例變量+非靜態(tài)方法)
c. 靜態(tài)方法中不能this/super關(guān)鍵字
d. 靜態(tài)方法能被子類繼承
e. 靜態(tài)方法只能被靜態(tài)方法覆蓋,靜態(tài)方法沒有體現(xiàn)多態(tài)的應(yīng)用
(5) 靜態(tài)方法應(yīng)用場景:通常將工具類中方法設(shè)置為靜態(tài)方法,為了方便使用者調(diào)用
三、static可以修飾初始化代碼塊
(1) 被static修飾初始化代碼塊稱為靜態(tài)代碼塊
(2) 靜態(tài)代碼塊的位置:定義在類以內(nèi),方法以為,被static修飾的{}
class 類名{
static{
// 靜態(tài)代碼塊
}
}
(3) 作用:在類加載的時(shí)候,按照和靜態(tài)屬性定義的先后順序完成對靜態(tài)屬性的初始化工作
(4) 類加載:
a. 概念:jvm第一次使用一個(gè)類的時(shí)候,通過classPath找到類對應(yīng)的.class文件;
并且對.class文件進(jìn)行讀取該類的信息;
(包名、類名、父類、屬性、構(gòu)造方法、成員方法等);
將讀取信息保存到j(luò)vm內(nèi)存中,一個(gè)類只一次類加載。
b. 類加載的時(shí)機(jī):(什么叫jvm第一次使用一個(gè)類)
I. 第一個(gè)訪問該類靜態(tài)成員(靜態(tài)屬性和靜態(tài)方法)
II. 第一次創(chuàng)建該類對象:先完成類加載;再完成對象的創(chuàng)建
III. 子類類加載,先導(dǎo)致其父類類加載:先加在父類,再加載子類
① 第一次調(diào)用子類靜態(tài)屬性或靜態(tài)方法
② 第一次創(chuàng)建子類對象:先進(jìn)行類加載,再完成對象的創(chuàng)建
加載:先完成父類的類加載,再完成子類的類加載
創(chuàng)建對象 :先完成父類對象的創(chuàng)建,再子類對象的創(chuàng)建
修飾符之final (最終的)
一、final可以修飾變量
final可以修飾變量(局部變量、成員變量—>實(shí)例變量和靜態(tài)變量)
(1) 特點(diǎn):被final修飾的變量,作用范圍內(nèi)常量,只允許一次賦值,可以被發(fā)多使用
注意:final修飾變量一旦賦值,不能修改
(2) 語法:
訪問修飾符 final 數(shù)據(jù)類型 變量名 = 值;
(3) final修飾的實(shí)例不再具有默認(rèn)值,開發(fā)人員對其賦值的機(jī)會如下:
a. 定義的時(shí)候?qū)ζ涑跏蓟?,賦值
final int a = 3;
b. 利用構(gòu)造方法完成賦值
class A{
final int a ;
public A(int a){
this.a=a;
}
}
(4) final修飾的靜態(tài)變量不再具有默認(rèn)值,開發(fā)人員對其賦值的機(jī)會如下:
a. 在定義時(shí)對其初始化,賦值
b. 利用靜態(tài)代碼塊對其初始化
class A{
final static int n;
static{
n = 5;
}
}
(5) final修飾的引用,代表引用中存儲對象不能改變
二、final可以修飾方法
可以被子類繼承,但是不允許子類覆蓋.
三、final可以修飾屬性
被final修飾的類不能被繼承,即沒有子類.
到此這篇關(guān)于Java修飾符abstract與static及final的精華總結(jié)的文章就介紹到這了,更多相關(guān)Java abstract static final內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Java如何使用Jetty實(shí)現(xiàn)嵌入式的Servlet容器
這篇文章主要介紹了Java使用Jetty實(shí)現(xiàn)嵌入式的Servlet容器,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,下面我們來一起了解一下吧2019-06-06IDEA 2021配置JavaWeb項(xiàng)目超詳細(xì)教程
本文通過圖文并茂的形式給大家介紹IDEA 2021配置JavaWeb項(xiàng)目的過程,內(nèi)容簡單易懂,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友參考下吧2021-08-08commons fileupload實(shí)現(xiàn)文件上傳的實(shí)例代碼
這篇文章主要介紹了commons fileupload實(shí)現(xiàn)文件上傳的實(shí)例代碼,包括文件上傳的原理分析等相關(guān)知識點(diǎn),本文給大家介紹的非常詳細(xì),具有參考借鑒價(jià)值,感興趣的朋友一起看看吧2016-10-10如果淘寶的七天自動(dòng)確認(rèn)收貨讓你設(shè)計(jì)你用Java怎么實(shí)現(xiàn)
在面試的時(shí)候如果面試官問淘寶的七天自動(dòng)確認(rèn)收貨讓你設(shè)計(jì),你會怎么具體實(shí)現(xiàn)呢?跟著小編看一下下邊的實(shí)現(xiàn)過程,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值2021-09-09SpringBoot中自定義注解實(shí)現(xiàn)參數(shù)非空校驗(yàn)的示例
這篇文章主要介紹了SpringBoot中自定義注解實(shí)現(xiàn)參數(shù)非空校驗(yàn),幫助大家更好的理解和使用springboot框架,感興趣的朋友可以了解下2020-11-11淺談java實(shí)現(xiàn)背包算法(0-1背包問題)
本篇文章主要介紹了淺談java實(shí)現(xiàn)背包算法(0-1背包問題) ,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2017-08-08java使用Socket實(shí)現(xiàn)文件上傳功能
這篇文章主要為大家詳細(xì)介紹了java使用Socket實(shí)現(xiàn)文件上傳功能,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-02-02