關於過載:
可見ua.dostuff(animalreftohorse);輸出的是「animal」,這裡雖然引數animalreftohorse被賦值了乙個horse(),但是在傳引數的時候,他還是作為乙個animal變數被識別。
再看
但是這裡gm.type();,gm是乙個game物件,但是被賦值了乙個game的子型別cricket物件,gm.type()用的卻是子型別的方法,與上乙個圖的情況截然相反。
仔細檢視可見才發現原來這個解釋在之前過載的部分有描述了:
於是我們的疑惑就得到了解答,第乙個圖是過載方法,是根據編譯階段傳入的引用資料型別來決定呼叫的:如下
但是第二個圖是重寫方法:是在執行時基於物件型別動態分配的。
關於方法重寫和方法過載的總結
1.重寫 在繼承了父類所有的成員後,再按照自己的意願,改變以前父類的操作方式,叫做重寫。2.重寫的目的 a.修改父類的方法,對父類的方法進行擴充套件。b.在子類中定義具體的 特定的行為 3.方法重寫的條件 a.如果父類中的方法被private修飾的,此時該方法只能被自己類訪問,不能被外部類訪問。b....
java中關於過載和重寫的理解
重寫 覆蓋 overwrite 是發生在子類和父類之間的,子類重寫父類的方法。規則 方法名字,方法的引數 引數的個數,型別,順序 返回型別必須一樣,異常不能被擴大,可見性不能縮小。重寫方法只能存在於具有繼承關係中,重寫方法只能重寫父類非私有的方法。子類可以和父類用相同名字的靜態方法,方法名,引數型別...
《工作筆記》java中的重寫和過載
在同乙個類中,方法名字相同,引數型別 引數個數 返回值不同,偽 public class main public string methoda public void methoda integer b 在父子類中,方法名相同,引數相同,返回值相同,偽 public class maina exte...