假設你有一個類層次結構爲:如何修改所有派生類中的方法返回值?
class Base
{
public virtual string GetName()
{
return "BaseName";
}
}
class Derived1 : Base
{
public override string GetName()
{
return "Derived1";
}
}
class Derived2 : Base
{
public override string GetName()
{
return "Derived2";
}
}
在最恰當的方式,我怎麼能寫在所有「的GetName」的方法增加了「XX」的字符串在派生類中返回值的方式的代碼?
例如:
Derived1.GetName returns "Derived1XX"
Derived2.GetName returns "Derived2XX"
更改GetName方法實現的代碼不是好辦法,因爲可能存在多個派生類型基地。
這通常不是一個好的設計。如果你不想在孩子們身上改變某些東西,那就把它「封」起來。 – Renan 2014-09-30 21:08:46
@Ranan方法默認是封閉的,它們必須是'virtual'才能被覆蓋。如果班級是「密封」的,那麼就不會有孩子。而OP確實希望'GetName'在每個孩子中都返回不同的東西 - 他只是想要一個通用的後綴。 – Blorgbeard 2014-09-30 21:14:35
@Blorgbeard true.dat。我完全忘記了。 – Renan 2014-09-30 21:26:04