更新時(shí)間:2020-11-17 來源:黑馬程序員 瀏覽量:
final變量只能賦值一次,賦值的方式有三種:
1)聲明變量時(shí)直接賦值;
2)非靜態(tài)成員變量在{}塊中賦值,靜態(tài)成員變量在static{}塊中賦值;
3)非靜態(tài)成員變量在構(gòu)造方法中賦值。
final修飾類
final類不能被繼承,因此不會(huì)有子類。final類中的方法不論是否有final修改,都是final的。
下面定義了一個(gè)簡(jiǎn)單的final類:
public final class FinalClass { }
//下面的類繼承將會(huì)出現(xiàn)編譯錯(cuò)誤
class Sub extends FinalClass { }
final修飾方法
final方法不能被override。若父類中的方法為final的,則子類不能override該方法,但可以調(diào)用該方法(父類的final方法)。
下面的程序試圖重寫final方法,將會(huì)引發(fā)編譯錯(cuò)誤:
public class FinalMethod {
public final void say () { }
}
class Sub extends FinalMethod {
//下面方法將會(huì)出現(xiàn)編譯錯(cuò)誤
public void say () { }
}
final成員變量
final修飾的變量不可被改變,意思是不能被重新賦值。由于final修飾的成員變量不能重新賦值,所以Java語規(guī)定:final修飾的成員變量必須由程序員顯示的指定初始值。
final修飾的類變量和實(shí)例變量指定初始值得地方如下:
1)類變量:必須在靜態(tài)初始化塊中指定初始值或聲明該類變量時(shí)指定初始值,而且只能二選一指定。
2)實(shí)例變量:必須在非靜態(tài)初始化塊、聲明該實(shí)例變量或構(gòu)造器中指定初始值,而且只能三選一指定。
final修飾基本類型變量和引用類型變量的區(qū)別:
當(dāng)final修飾基本類型變量時(shí),改基本類型變量不能被改變。但對(duì)于引用類型變量而言,它保存的僅僅只是引用,final只保證這個(gè)引用類型變量所引用的地址不會(huì)改變,即一直引用同一個(gè)對(duì)象,但這個(gè)對(duì)象完全可以發(fā)生改變。
猜你喜歡
1024首播|39歲程序員逆襲記:不被年齡定義,AI浪潮里再迎春天
2025-10-241024程序員節(jié)丨10年同行,致敬用代碼改變世界的你
2025-10-24【AI設(shè)計(jì)】北京143期畢業(yè)僅36天,全員拿下高薪offer!黑馬AI設(shè)計(jì)連續(xù)6期100%高薪就業(yè)
2025-09-19【跨境電商運(yùn)營】深圳跨境電商運(yùn)營畢業(yè)22個(gè)工作日,就業(yè)率91%+,最高薪資達(dá)13500元
2025-09-19【AI運(yùn)維】鄭州運(yùn)維1期就業(yè)班,畢業(yè)14個(gè)工作日,班級(jí)93%同學(xué)已拿到Offer, 一線均薪資 1W+
2025-09-19【AI鴻蒙開發(fā)】上海校區(qū)AI鴻蒙開發(fā)4期5期,距離畢業(yè)21天,就業(yè)率91%,平均薪資14046元
2025-09-19成都黑馬Java程序開發(fā)培訓(xùn)價(jià)格要多少錢?
2020-11-17cookie和session的區(qū)別和用法【Java面試題解析】
2020-11-17openresty安裝使用教程【黑馬程序員】
2020-11-13廣州Java培訓(xùn)價(jià)格是多少?看完不上當(dāng)
2020-11-11反射機(jī)制應(yīng)用:DAO抽取通用層實(shí)現(xiàn)
2020-11-06Java培訓(xùn)價(jià)格一般要多少?正規(guī)Java培訓(xùn)機(jī)構(gòu)收費(fèi)標(biāo)準(zhǔn)
2020-11-06