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實(shí)現(xiàn)讀取txt文件中的內(nèi)容
本文通過(guò)一個(gè)具體的例子向大家展示了如何使用java實(shí)現(xiàn)讀取TXT文件里的內(nèi)容的方法以及思路,有需要的小伙伴可以參考下2016-03-03
SpringBoot中如何進(jìn)行統(tǒng)一異常處理
大家好,本篇文章主要講的是SpringBoot中如何進(jìn)行統(tǒng)一異常處理,感興趣的同學(xué)趕快來(lái)看一看吧,對(duì)你有幫助的話記得收藏一下2022-02-02
使用Spring Cache和Redis實(shí)現(xiàn)查詢數(shù)據(jù)緩存
在現(xiàn)代應(yīng)用程序中,查詢緩存的使用已經(jīng)變得越來(lái)越普遍,它不僅能夠顯著提高系統(tǒng)的性能,還能提升用戶體驗(yàn),在這篇文章中,我們將探討緩存的基本概念、重要性以及如何使用Spring Cache和Redis實(shí)現(xiàn)查詢數(shù)據(jù)緩存,需要的朋友可以參考下2024-07-07
Spring Cloud LoadBalancer 負(fù)載均衡詳解
本文介紹了如何在Spring Cloud中使用SpringCloudLoadBalancer實(shí)現(xiàn)客戶端負(fù)載均衡,并詳細(xì)講解了輪詢策略和隨機(jī)策略的配置方法,此外,還提供了部署到云服務(wù)器并在多個(gè)實(shí)例之間進(jìn)行負(fù)載均衡的步驟,感興趣的朋友一起看看吧2025-02-02
Java日常練習(xí)題,每天進(jìn)步一點(diǎn)點(diǎn)(6)
下面小編就為大家?guī)?lái)一篇Java基礎(chǔ)的幾道練習(xí)題(分享)。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧,希望可以幫到你2021-07-07
MyBatis-Flex BaseMapper的接口基本用法小結(jié)
本文主要介紹了MyBatis-Flex BaseMapper的接口基本用法小結(jié),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2025-02-02
springboot 如何使用jackson來(lái)處理實(shí)體類(lèi)
這篇文章主要介紹了springboot使用jackson來(lái)處理實(shí)體類(lèi)的操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-10-10
springboot動(dòng)態(tài)切換數(shù)據(jù)庫(kù)表方式
本文分享了使用TableScopeAspectAjk切面和TableScopeAjk注解實(shí)現(xiàn)數(shù)據(jù)庫(kù)表配置、業(yè)務(wù)切入點(diǎn)管理及SQL動(dòng)態(tài)配置的經(jīng)驗(yàn),旨在提升代碼可維護(hù)性與靈活性,適用于業(yè)務(wù)邏輯與數(shù)據(jù)層的分離開(kāi)發(fā)2025-08-08
MyBatis插件實(shí)現(xiàn)SQL執(zhí)行耗時(shí)監(jiān)控
MyBatis插件(Plugin)是其框架擴(kuò)展性的核心,本文深入剖析插件實(shí)現(xiàn)原理,手把手教你開(kāi)發(fā)企業(yè)級(jí)SQL監(jiān)控插件,有需要的小伙伴可以了解下2025-12-12
SpringBoot文件上傳控制及Java 獲取和判斷文件頭信息
這篇文章主要介紹了SpringBoot文件上傳控制的相關(guān)資料,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友可以參考下2017-12-12

