久久r热视频,国产午夜精品一区二区三区视频,亚洲精品自拍偷拍,欧美日韩精品二区

您的位置:首頁技術(shù)文章
文章詳情頁

java中重寫父類方法加不加@Override詳解

瀏覽:45日期:2022-08-10 09:55:01
java重寫父類方法加不加@Override

這個(gè)是我在剛學(xué)習(xí)java時(shí)遇到的問題,希望能給像我一樣的新手學(xué)習(xí)時(shí)帶來幫助,如有錯(cuò)誤請指正,謝謝!

class Father{ public String name; public int age; public Father(){ } public void work(){System.out.println('蓋房子'); }}class Son extends Father{ public int weight; public Son(){ } public void work(){System.out.println(i); }}

上面子類的work()方法和基類work()方法的控制器類型(包括返回值類型、參數(shù)等)是完全一致的,這種情況加不加@Override都是可以的,都可以對基類方法進(jìn)行重寫。

因?yàn)椴粚懙那闆r下,java虛擬機(jī)會(huì)進(jìn)行自動(dòng)識(shí)別。

class Son extends Father{ public int weight; public Son(){ } public int work(int i){System.out.println(); }}

在上面這種情況下,work()方法會(huì)被系統(tǒng)認(rèn)為是子類新定義的方法,沒有繼承基類,這也是被允許的。

class Son extends Father{ public int weight; public Son(){ } public int work(){System.out.println();return 1; }}

但是這種情況只修改返回值類型時(shí),是不被允許的,其仍被看做基類的重寫,但是返回值類型變了,就會(huì)被編輯器認(rèn)為基類重寫返回值類型不一致而報(bào)錯(cuò)。

所以存在即合理,在編寫代碼時(shí)如果需要對基類進(jìn)行重寫還是加上@Override比較好,還可以檢測一些容易忽略的錯(cuò)誤。

@Override的作用

@Override是偽代碼,表示重寫(當(dāng)然不寫也可以),不過寫上有如下好處:

1、可以當(dāng)注釋用,方便閱讀

2、編譯器可以給你驗(yàn)證@Override下面的方法名是否是你父類中所有的,如果沒有則報(bào)錯(cuò)。

例如,你如果沒寫@Override,而你下面的方法名又寫錯(cuò)了,這時(shí)你的編譯器是可以編譯通過的,因?yàn)榫幾g器以為這個(gè)方法是你的子類中自己增加的方法。

舉例:在重寫父類的onCreate時(shí),在方法前面加上@Override 系統(tǒng)可以幫你檢查方法的正確性。

@Overridepublic void onCreate(Bundle savedInstanceState){…….}

這種寫法是正確的,如果你寫成:

@Overridepublic void oncreate(Bundle savedInstanceState){…….}

編譯器會(huì)報(bào)如下錯(cuò)誤:

The method oncreate(Bundle) of type HelloWorld must override or implement a supertype method

以確保你正確重寫onCreate方法(因?yàn)閛ncreate應(yīng)該為onCreate)。

而如果你不加@Override,則編譯器將不會(huì)檢測出錯(cuò)誤,而是會(huì)認(rèn)為你為子類定義了一個(gè)新方法:oncreate

加不加@override有什么區(qū)別

1.簡單來說@override注解是告訴編譯器,下面的方法是重寫父類的方法

2.如果不寫@override注解去直接重寫方法,編譯器是不會(huì)判斷你是不是正確重寫了父類中的方法的。

如重寫方法時(shí)參數(shù)與父類不同,程序是不會(huì)提示報(bào)錯(cuò)的。這會(huì)留下一個(gè)潛在的bug。

當(dāng)你寫了@override注解時(shí),程序會(huì)判斷你是否正確的重寫了父類的對應(yīng)方法。

而且加上此注解后,程序會(huì)自動(dòng)屏蔽父類的方法。

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持好吧啦網(wǎng)。

標(biāo)簽: Java
相關(guān)文章:
主站蜘蛛池模板: 海口市| 芜湖市| 黑水县| 凤翔县| 高唐县| 牙克石市| 祁门县| 安国市| 通榆县| 石林| 临湘市| 南投县| 邯郸市| 云林县| 舞钢市| 邯郸市| 砚山县| 平原县| 宁夏| 建昌县| SHOW| 玉林市| 江城| 乌拉特中旗| 大足县| 平果县| 留坝县| 古浪县| 昌宁县| 应城市| 苍梧县| 孟连| 类乌齐县| 铜梁县| 章丘市| 牙克石市| 长岛县| 诏安县| 安丘市| 滨州市| 漳浦县|