建議99 重寫時不應使用子類引數

2021-07-22 12:34:30 字數 578 閱讀 9499

建議99:重寫時不應使用子類引數

重寫時,如果使用了子類引數,可能會偏離設計者的預期目標。比如,存在乙個如下繼承體系:

class

employee

class

manager : employee

現在,型別managersalary中的setsalary方法重寫了salary中的相同方法,重寫的方法採用乙個子類引數:

class

salary

}class

managersalary : salary

}

呼叫者的**看起來如下:

static

void main(string

args)

設計者的本意是要設定經理的薪水,可是實際呼叫的**卻是設定了員工的薪水。

輸出為:

職員被設定了薪水。

所以,在重寫時,使用子類引數有一定風險,應當避免這種設計。正確的方法應當仍舊使用employee型別引數,這起碼能讓編譯器提醒我們要使用new關鍵字。

**:《編寫高質量**改善c#程式的157個建議》陸敏技

物件導向6 重寫

1 重寫 1.1重寫急速子類重寫定義父類的方法 2.2重寫規矩 a.方法名和引數列表相同 b.修飾符訪問許可權子類和父類相同或者父類大 c.返回值型別子類和父類相同 d.異常跟父類相同或者範圍更小 一般 重寫是,子類的東西都要與父類保持一致 方法過載與方法重寫 位 置 方法名 參數列 返回值 訪問修...

10 重寫和過載

重寫是子類對父類方法的重新編寫 class animal class dog extends animal public class testdog 過載 overloading 是在乙個類裡面,方法名字相同,而引數不同。返回型別可以相同也可以不同。方法名相同 public class overlo...

C 入門8 5 重寫方法

重寫方法用相同的簽名重寫所繼承的虛方法。虛方法宣告用於引入新方法,而重寫方法宣告則用於使現有的繼承應方法專用化。由override宣告所裡寫的那個方法成為已重寫了的基方法。重寫宣告和已重寫了的基方法具有相同的宣告可訪問性。換句話說,重寫宣告不能更改所對應的虛方法的可訪問性。但是,如果已重寫的基方法是...