Java中final、static關(guān)鍵字與方法的重寫和繼承易錯點整理
1.final方法不能被重寫
如果父類中的方法被聲明為final,那么這個方法就不能被子類重寫。嘗試在子類中定義與父類final方法同名、同參數(shù)列表、同返回類型(或子類型)的方法會導(dǎo)致編譯錯誤。
class Parent {
final void show() {
System.out.println("Parent show()");
}
}
class Child extends Parent {
// 編譯錯誤:無法重寫final方法
@Override // @Override注解會觸發(fā)編譯器檢查,但在這里不適用
void show() {
System.out.println("Child show()");
}
}
2.static方法不是重寫,而是遮蔽
static方法不能被重寫,因為在Java中,static方法是類方法,而不是實例方法。如果你在子類中定義了與父類同名的static方法,那么這實際上是在子類中遮蔽了父類的static方法,而不是重寫它。
class Parent {
static void show() {
System.out.println("Parent show()");
}
}
class Child extends Parent {
// 這不是重寫,而是遮蔽
static void show() {
System.out.println("Child show()");
}
}
3.final與static的組合
當(dāng)一個方法同時被聲明為final和static時,它仍然是一個類方法,不能被重寫,也不能被子類中的同名方法所遮蔽(因為static方法總是通過類名來引用,所以子類中的同名static方法會被視為新的方法,而不是對父類方法的遮蔽)。但是,由于final的限制,這個組合實際上限制了任何嘗試在子類中定義同名方法的嘗試,因為final禁止了重寫,而static則使得方法調(diào)用與實例無關(guān)。
class Parent {
final static void show() {
System.out.println("Parent show()");
}
}
class Child extends Parent {
// 嘗試定義同名方法會導(dǎo)致編譯錯誤,因為final禁止了重寫,而static使得方法調(diào)用與實例無關(guān)
// static void show() { ... } // 編譯錯誤
}
4.final與繼承
==final類不能被繼承。==如果你試圖繼承一個被聲明為final的類,編譯器會報錯。
final class FinalClass {
// ...
}
class AnotherClass extends FinalClass {
// 編譯錯誤:FinalClass是final的,不能被繼承
}
5.static與繼承
雖然static方法不能被重寫,==但static變量(字段)是可以被子類繼承的。==不過,子類不能直接修改繼承自父類的static變量(除非在子類中聲明了一個同名的static變量來遮蔽它)。子類可以通過類名來訪問父類的static變量,也可以通過子類的類名來訪問(如果子類沒有遮蔽它的話)。
class Parent {
static int value = 10;
}
class Child extends Parent {
// 這里沒有遮蔽Parent.value
// Child.value 仍然引用的是 Parent.value
}
總之,理解final、static以及它們與重寫和繼承之間的關(guān)系對于編寫清晰、可維護的Java代碼至關(guān)重要。
總結(jié)
到此這篇關(guān)于Java中final、static關(guān)鍵字與方法的重寫和繼承易錯點整理的文章就介紹到這了,更多相關(guān)final、static關(guān)鍵字方法重寫和繼承內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- 詳解Java編程中static關(guān)鍵字和final關(guān)鍵字的使用
- java 中的static關(guān)鍵字和final關(guān)鍵字的不同之處
- java多線程關(guān)鍵字final和static詳解
- Java中的static和final關(guān)鍵字的使用詳解
- Java關(guān)鍵字final、static使用總結(jié)
- 學(xué)習(xí)Java的static與final關(guān)鍵字
- Java關(guān)鍵字詳解之final static this super的用法
- Java static 與 final關(guān)鍵字實例詳解
- Java中static與final關(guān)鍵字詳解(簡單易懂)
相關(guān)文章
Java使用觀察者模式實現(xiàn)氣象局高溫預(yù)警功能示例
這篇文章主要介紹了Java使用觀察者模式實現(xiàn)氣象局高溫預(yù)警功能,結(jié)合完整實例形式分析了java觀察者模式實現(xiàn)氣象局高溫預(yù)警的相關(guān)接口定義、使用、功能操作技巧,并總結(jié)了其設(shè)計原則與適用場合,具有一定參考借鑒價值,需要的朋友可以參考下2018-04-04
Java隨機值設(shè)置(java.util.Random類或Math.random方法)
在編程中有時我們需要生成一些隨機的字符串作為授權(quán)碼、驗證碼等,以確保數(shù)據(jù)的安全性和唯一性,這篇文章主要給大家介紹了關(guān)于Java隨機值設(shè)置的相關(guān)資料,主要用的是java.util.Random類或Math.random()方法,需要的朋友可以參考下2024-08-08
聊聊springboot中如何自定義消息轉(zhuǎn)換器
SpringBoot通過HttpMessageConverter處理HTTP數(shù)據(jù)轉(zhuǎn)換,支持多種媒體類型,接下來通過本文給大家介紹springboot中如何自定義消息轉(zhuǎn)換器,感興趣的朋友一起看看吧2025-08-08
Java簡單使用EasyExcel操作讀寫excel的步驟與要點
相信現(xiàn)在很多搞后端的同學(xué)大部分做的都是后臺管理系統(tǒng),那么管理系統(tǒng)就肯定免不了Excel的導(dǎo)出導(dǎo)入功能,下面這篇文章主要給大家介紹了關(guān)于Java簡單使用EasyExcel操作讀寫excel的步驟與要點,需要的朋友可以參考下2022-09-09

