Java構(gòu)造器(構(gòu)造方法)能否可以被重寫(xiě)
1. 前言
首先,構(gòu)造器是不能被繼承的,因?yàn)槊總€(gè)類(lèi)的類(lèi)名都不相同,而構(gòu)造器名稱(chēng)與類(lèi)名相同,所以根本談不上繼承。
又由于構(gòu)造器不能繼承,所以就不能被重寫(xiě)。
但是,在同一個(gè)類(lèi)中,構(gòu)造器是可以被重載的。
其實(shí),在之前的一篇博客中,我已經(jīng)記錄了重載和重寫(xiě)的區(qū)別
這里我們?cè)僦貜?fù)一下。
2. 方法重載(Overloading)
重載遵循 兩同一不同
(1)方法在同一個(gè)類(lèi)中;
(2)方法的名字相同;
(3)參數(shù)不同(個(gè)數(shù)、類(lèi)型、順序至少有一個(gè)不一樣);
(4)返回類(lèi)型可以相同也可以不同。
因此,每個(gè)重載的方法(或者構(gòu)造函數(shù))都必須有一個(gè)獨(dú)一無(wú)二的參數(shù)類(lèi)型列表。
最常用的地方就是構(gòu)造器的重載。
3. 方法的重寫(xiě)(Override)
重寫(xiě)發(fā)生在繼承關(guān)系中,當(dāng)一個(gè)子類(lèi)繼承一父類(lèi),父類(lèi)的某一個(gè)方法不再滿足子類(lèi)的具體特征,此時(shí)需要重新定義子類(lèi)中定義的該方法。
需要滿足一下條件
1.參數(shù)列表(方法的名稱(chēng),參數(shù)個(gè)數(shù)、類(lèi)型)必須完全與被重寫(xiě)方法的相同;
2.返回類(lèi)型必須完全與被重寫(xiě)方法的返回類(lèi)型相同;
3.子類(lèi)重寫(xiě)父類(lèi)的函數(shù)的時(shí)候,函數(shù)的訪問(wèn)權(quán)限必須大于等于父類(lèi)的函數(shù)的訪問(wèn)權(quán)限;(不能比父類(lèi)中被重寫(xiě)的方法的訪問(wèn)權(quán)限更低。例如:如果父類(lèi)的一個(gè)方法被聲明為public,那么在子類(lèi)中重寫(xiě)該方法就不能聲明為protected。)
4.父類(lèi)的成員方法只能被它的子類(lèi)重寫(xiě)。
5.聲明為final的方法不能被重寫(xiě)。
6.聲明為static的方法不能被重寫(xiě),但是能夠被再次聲明。
7.子類(lèi)和父類(lèi)在同一個(gè)包中,那么子類(lèi)可以重寫(xiě)父類(lèi)所有方法,除了聲明為private和final的方法。
8.子類(lèi)和父類(lèi)不在同一個(gè)包中,那么子類(lèi)只能夠重寫(xiě)父類(lèi)的聲明為public和protected的非final方法。
9.重寫(xiě)的方法能夠拋出任何非強(qiáng)制異常,無(wú)論被重寫(xiě)的方法是否拋出異常。但是,重寫(xiě)的方法不能拋出新的強(qiáng)制性異常,或者比被重寫(xiě)方法聲明的更廣泛的強(qiáng)制性異常,反之則可以。
10.構(gòu)造方法不能被重寫(xiě)。
11.如果不能繼承一個(gè)方法,則不能重寫(xiě)這個(gè)方法。
總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
java使用TimeZone將中國(guó)標(biāo)準(zhǔn)時(shí)間轉(zhuǎn)成時(shí)區(qū)值
這篇文章主要介紹了java使用TimeZone將中國(guó)標(biāo)準(zhǔn)時(shí)間轉(zhuǎn)成時(shí)區(qū)值的相關(guān)資料,需要的朋友可以參考下2023-11-11springboot項(xiàng)目攔截前端請(qǐng)求中的特殊字符串(解決方案)
springboot項(xiàng)目中,需要對(duì)前端請(qǐng)求數(shù)據(jù)進(jìn)行過(guò)濾,攔截特殊字符,本文通過(guò)實(shí)例代碼給大家分享完美解決方案,感興趣的朋友一起看看吧2023-10-10mybatis模糊查詢(xún)之bind標(biāo)簽和concat函數(shù)用法詳解
大家都知道bind 標(biāo)簽可以使用 OGNL 表達(dá)式創(chuàng)建一個(gè)變量井將其綁定到上下文中,接下來(lái)通過(guò)本文給大家介紹了mybatis模糊查詢(xún)——bind標(biāo)簽和concat函數(shù)用法,需要的朋友可以參考下2022-08-08java+socket實(shí)現(xiàn)簡(jiǎn)易局域網(wǎng)聊天室
這篇文章主要為大家詳細(xì)介紹了java+socket實(shí)現(xiàn)簡(jiǎn)易局域網(wǎng)聊天室,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-05-05詳解Spring AOP 實(shí)現(xiàn)“切面式”valid校驗(yàn)
本篇文章主要介紹了詳解Spring AOP 實(shí)現(xiàn)“切面式”valid校驗(yàn),小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2018-01-01java與C 代碼運(yùn)行效率的對(duì)比(整理)
最近和朋友無(wú)意間討論起了 有關(guān)java 和C 的 效率問(wèn)題, (我是java 推介者, 他是 c 語(yǔ)言推介者, 他做的是嵌入式)故,想通過(guò)網(wǎng)絡(luò)查詢(xún)一下, 總結(jié)一下,兩者到底效率如何,其有何差異,原因又是啥?各種優(yōu)勢(shì)有在何處?2021-04-04SpringSecurityOAuth2 如何自定義token信息
這篇文章主要介紹了SpringSecurityOAuth2 自定義token信息的操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-06-06