一、方法的重寫概念
之前說了子類如果繼承了一個父類,那么子類就會擁有父類的方法(不包括構.造方法)和屬性,此時如果在子類中定義了一個和父類一樣的方法,這種現象叫做子類覆寫(重寫)了父類的方法,
DEMO:重寫父類父類方法

以上的代碼如果實體化一個Stundent子類物件,然后呼叫getInfo()則呼叫的是子類還是父類的getInfo()方法呢?
DEMO:觀察代碼

發現了呼叫的是子類中的方法,就是說子類的getnfo()覆寫了父類的getInfo()方法,其實上在呼叫的時候先在子類中查找呼叫的方法,如果有則直接呼叫,如果沒有就往父類中查找,如果還沒有繼續往父類的父類中查找,如果最終都沒有找到,則編.譯不通過,
二、實作覆寫需要哪些要求
1、要求子類的方法名稱和父類的一致,而且引數串列要一致,


在主方法呼叫了getInfo()方法,會Student類中查找該方法,但是Student類中沒有這個無引數的getInfo()方法,所以往父類中查找,最后就呼叫了父類的getInfo()
2、如果子類的方法的訪問權限和父類的方法的訪問權限不同呢?

子類中重寫的方法的訪問權限只能比父類的大,不能比父類的小,也就是說子類重寫的方法不能擁有比父類更為嚴格的訪問權限(正常開發訪問權限都是一樣的),
3、如果子類覆寫的方法和父類的方法回傳值不一樣呢?

如果父類方法和子類覆寫 的方法的訪問權限一樣則回傳值必須一致,如果訪問權限不一樣則回傳值可以不--致(正常開發中回傳值和訪問權限都是--致的)
面試題:請說明多載和重寫的區別?
●多載:
發生在一個類中
對回傳值沒有要求(但是正常都會保持- -致)
對訪問權限沒有要求(但是正常都會保持一致)
表示多載的單詞是overloading
●重寫:
發生在繼承關系中(子類和父類)
子類不能擁有比父類更小的訪問權限
如果子類和父類訪問權限--致則回傳值必須要相同,否則可以不同
表示重寫的單詞是override
總結:
1、方法重寫的概念
2、方法重寫的要求.
3、如果子類覆寫了父類的方法,那么在呼叫的時候是呼叫子類的方法
有完整的Java初級,高級對應的學習路線和資料!專注于java開發,分享java基礎、原理性知識、JavaWeb實戰、spring全家桶、設計模式、分布式及面試資料、開源專案,助力開發者成長!
歡迎關注微信公眾號:碼邦主

轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/241710.html
標籤:Java
