java重寫(xiě)(@Override)介紹以及舉例說(shuō)明
1.概述
方法的重寫(xiě)(override)是封裝的特性之一。在子類(lèi)中可以根據(jù)需要對(duì)基類(lèi)中繼承來(lái)的方法進(jìn)行重寫(xiě)。重載和重寫(xiě)沒(méi)有任何關(guān)系。
作用:通過(guò)重寫(xiě),子類(lèi)既可以繼承父類(lèi)的東西,又可以靈活的擴(kuò)充。
1.@override注解是告訴編譯器,下面的方法是重寫(xiě)父類(lèi)的方法
2.編譯器可以給你驗(yàn)證@Override下面的方法名是否是你父類(lèi)中所有的,如果沒(méi)有則報(bào)錯(cuò)。例如,你如果沒(méi)寫(xiě)@Override,而你下面的方法名又寫(xiě)錯(cuò)了,這時(shí)你的編譯器是可以編譯通過(guò)的,因?yàn)榫幾g器以為這個(gè)方法是你的子類(lèi)中自己增加的方法。
3.如果不寫(xiě)@override注解去直接重寫(xiě)方法,編譯器是不會(huì)判斷你是不是正確重寫(xiě)了父類(lèi)中的方法的。如重寫(xiě)方法時(shí)參數(shù)與父類(lèi)不同,程序是不會(huì)提示報(bào)錯(cuò)的。這會(huì)留下一個(gè)潛在的bug。當(dāng)你寫(xiě)了@override注解時(shí),程序會(huì)判斷你是否正確的重寫(xiě)了父類(lèi)的對(duì)應(yīng)方法。而且加上此注解后,程序會(huì)自動(dòng)屏蔽父類(lèi)的方法。
2.特點(diǎn)
在子類(lèi)中可以根據(jù)需要對(duì)基類(lèi)中繼承來(lái)的方法進(jìn)行重寫(xiě)。
重寫(xiě)方法必須和被重寫(xiě)方法具有相同方法名稱、參數(shù)列表和返回值類(lèi)型。
重寫(xiě)方法不能使用比被重寫(xiě)方法更嚴(yán)格的訪問(wèn)權(quán)限。(由于多態(tài))
3.實(shí)例說(shuō)明
代碼如下:
public class Animal {
String name;
void eat() {
System.out.println("have a good dinner");
}
public static void main(String[] args) {
Birds b = new Birds();
b.eat();
}
}
class Birds extends Animal {
@Override
void eat() {
super.eat(); // 調(diào)用父類(lèi)的方法
System.out.println("----------------------------------------"); // 分隔線
System.out.println("jiujiujiu");
}
void fly() {
System.out.println("Yeah,I can fly~~");
}
}代碼說(shuō)明:
鳥(niǎo)類(lèi)Birds在eat的時(shí)候,需要輸出jiujiujiu。可通過(guò)重寫(xiě)父類(lèi)Animal中的eat()方法實(shí)現(xiàn)。
通過(guò)Bird實(shí)例調(diào)用eat()方法時(shí),是調(diào)用重寫(xiě)后的方法。
之前的父類(lèi)的方法呢?其實(shí)還存在,可以在子類(lèi)中通過(guò)super進(jìn)行調(diào)用。
運(yùn)行結(jié)果:
have a good dinner
----------------------------------------
jiujiujiu
附:加不加@override有什么區(qū)別
如果不寫(xiě)@override注解去直接重寫(xiě)方法,編譯器是不會(huì)判斷你是不是正確重寫(xiě)了父類(lèi)中的方法的。如重寫(xiě)方法時(shí)參數(shù)與父類(lèi)不同,程序是不會(huì)提示報(bào)錯(cuò)的。這會(huì)留下一個(gè)潛在的bug。當(dāng)你寫(xiě)了@override注解時(shí),程序會(huì)判斷你是否正確的重寫(xiě)了父類(lèi)的對(duì)應(yīng)方法。而且加上此注解后,程序會(huì)自動(dòng)屏蔽父類(lèi)的方法。
總結(jié)
到此這篇關(guān)于java重寫(xiě)(@Override)介紹以及舉例說(shuō)明的文章就介紹到這了,更多相關(guān)java重寫(xiě)@Override內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
cmd中javac和java使用及注意事項(xiàng)詳解
這篇文章主要介紹了cmd中javac和java使用及注意事項(xiàng)詳解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2019-07-07
Mybatis-plus中IService接口的基本使用步驟
Mybatis-plus是一個(gè)Mybatis的增強(qiáng)工具,它提供了很多便捷的方法來(lái)簡(jiǎn)化開(kāi)發(fā),IService是Mybatis-plus提供的通用service接口,封裝了常用的數(shù)據(jù)庫(kù)操作方法,包括增刪改查等,下面這篇文章主要給大家介紹了關(guān)于Mybatis-plus中IService接口的基本使用步驟,需要的朋友可以參考下2023-06-06
Java Mybatis框架Dao層的實(shí)現(xiàn)與映射文件以及核心配置文件詳解分析
MyBatis 是一款優(yōu)秀的持久層框架,它支持自定義 SQL、存儲(chǔ)過(guò)程以及高級(jí)映射。MyBatis 免除了幾乎所有的 JDBC 代碼以及設(shè)置參數(shù)和獲取結(jié)果集的工作。MyBatis 可以通過(guò)簡(jiǎn)單的 XML 或注解來(lái)配置和映射原始類(lèi)型、接口和 Java POJO為數(shù)據(jù)庫(kù)中的記錄2021-10-10
Java?Mybatis使用resultMap時(shí),屬性賦值順序錯(cuò)誤的巨坑
這篇文章主要介紹了Java?Mybatis使用resultMap時(shí),屬性賦值順序錯(cuò)誤的巨坑,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-01-01
rabbitmq之無(wú)法自動(dòng)創(chuàng)建隊(duì)列的問(wèn)題及解決過(guò)程
文章描述了一項(xiàng)目使用RabbitMQ但僅使用發(fā)送功能未監(jiān)聽(tīng),導(dǎo)致啟動(dòng)時(shí)無(wú)自動(dòng)創(chuàng)建隊(duì)列的問(wèn)題,作者通過(guò)手動(dòng)連接RabbitMQ配置隊(duì)列信息來(lái)解決此問(wèn)題,并提供了一種測(cè)試可用的方法,此方法僅為作者個(gè)人經(jīng)驗(yàn),僅供參考2026-05-05
基于SpringBoot+FFmpeg+ZLMediaKit實(shí)現(xiàn)本地視頻推流
文章介紹了如何在服務(wù)器上安裝和配置ZLMediaKit和FFmpeg,以及如何使用SpringBoot實(shí)現(xiàn)視頻推流和播放功能,包括環(huán)境準(zhǔn)備、后端實(shí)現(xiàn)和使用說(shuō)明,涵蓋了推流和播放的完整流程,需要的朋友可以參考下2025-11-11
Spring注解驅(qū)動(dòng)之@EventListener注解使用方式
這篇文章主要介紹了Spring注解驅(qū)動(dòng)之@EventListener注解使用方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-09-09
使用JAXBContext輕松實(shí)現(xiàn)Java和xml的互相轉(zhuǎn)換方式
這篇文章主要介紹了依靠JAXBContext輕松實(shí)現(xiàn)Java和xml的互相轉(zhuǎn)換方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-08-08

