1. 程式人生 > >JAVA的過載與重寫&隱藏與覆蓋

JAVA的過載與重寫&隱藏與覆蓋

過載:

前提條件:過載是針對方法來說的,

①在同一個類當中,
②函式名字相同,
③但是引數個數不同或引數型別不同或引數順序不同
④只有返回值不同是不可以的

重寫:

前提條件:重寫是針對例項方法來說的

1、要求子父類有相同的“返回值型別 方法名(引數列表)”都相同
2、子類方法的許可權修飾符不能小於父類方法的許可權修飾符
3、若父類方法拋異常,那麼子類方法拋的異常不能大於父類方法拋的異常
4、子父類的方法必須同為static或者同為非static

方法不能交叉覆蓋:子類例項方法不能覆蓋父類的靜態方法;子類的靜態方法也不能覆蓋父類的例項方法

注意:重寫是對子類中可見的父類方法而言的,如果在父類中的方法在子類中不可見,那根本就不存在重寫一說

 

上圖中綠色小三角就代表這個方法重寫了

覆蓋:

 覆蓋就是重寫

隱藏:

隱藏是對於靜態方法和成員變數(例項變數和靜態變數)而言的,就是父類和子類有相同名字的屬性,或者父類和子類有相同名字的靜態方法時,

屬性是可以交叉隱藏:子類的例項變數可以隱藏父類的靜態變數;子類的靜態變數可以隱藏父類的例項變數

原理:

覆蓋的原理是RTTI,也就是通過Class物件實現的,看的是=後面,執行時型別為引用變數所指向的物件的型別

隱藏就是根據單純的靜態型別實現的,看的是=前面,編譯時型別是引用變數自身的型別