C#程式將物件轉為json
阿新 • • 發佈:2022-05-10
過載
過載指方法名稱相同,但引數型別個數不同,是行為水平方向不同實現。
對編譯器來說,方法名稱和引數列表組成了一個唯一鍵,稱為方法簽名,JVM 通過方法簽名決定呼叫哪種過載方法。(方法簽名不包括返回型別)
不管繼承關係如何複雜,過載在編譯時可以根據規則知道呼叫哪種目標方法,因此屬於靜態繫結。
JVM 在過載方法中選擇合適方法的順序:
- 精確匹配。
- 基本資料型別自動轉換成更大表示範圍。
- 自動拆箱與裝箱。
- 子類向上轉型。
- 可變引數。
重寫
重寫指子類實現介面或繼承父類時,保持方法簽名完全相同,實現不同方法體,是行為垂直方向不同實現。
元空間有一個方法表儲存方法資訊,如果子類重寫了父類的方法,則方法表中的方法引用會指向子類實現。
父類引用執行子類方法時無法呼叫子類存在而父類不存在的方法。
重寫方法訪問許可權不能變小,返回型別和丟擲的異常型別不能變大,必須加 @Override。
- 子類與父類有符合覆寫規定的方法時,不加@Override 註解,也是能夠覆寫的,但是在實際使用時可能會產生一些疑問,到底是呼叫父類的方法還是子類覆寫後的方法呢。
- 而加上註解能增加程式碼的可讀性,看到標籤就知道這是從父類重寫的方法,在呼叫時也將呼叫重寫後的方法。
- 並且使用@Override可以準確判斷是否覆蓋成功。