方法B用于方法A;在继承的类中,使用A重写B

时间:2017-02-25 13:59:43

标签: c# inheritance

例如,在下面的类中,假设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";
    }    
}

1 个答案:

答案 0 :(得分:1)

在狗改变GetWords到

protected virtual string GetWords()

在doge中使用

 protected override string GetWords()