例如,在下面的类中,假设Say()
是一个相对较长的方法。其他一切都很好,但我想为GetWords()
做其他事情。我创建了一个继承的类,并让GetWords()
做其他事情。但是它的Say()
方法仍然会使用父类的GetWords()
。
有没有办法在不继承继承类中的Say()
并复制并粘贴方法体的情况下实现此目的? Dog
类已经实现了,但我可以根据需要随意更改它。
Doge d = new Doge();
d.Say(); //says `Rrrrrrrr`.
public class Dog
{
public void Say()
{
// Do a lot of stuff
var words = GetWords();
Debug.WriteLine(words);
// Do a lot of other stuff
}
protected string GetWords()
{
return "Rrrrrrrr";
}
}
public class Doge:Dog
{
protected new string GetWords()
{
return "Such inheritance";
}
}
答案 0 :(得分:1)
在狗改变GetWords到
protected virtual string GetWords()
在doge中使用
protected override string GetWords()