假设你有一个类层次结构为:如何修改所有派生类中的方法返回值?
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