在.NET中覆盖一个函数需要什么

时间:2011-03-15 18:12:25

标签: c# override

我今天在接受采访时被问到这个问题,我无法理解。我被问到从开始到高级问题的所有问题,但是这个问题一直存在。我正在描述继承和多态,然后出现了这个问题。我显然从未尝试覆盖[C#/ C ++]类中的每个方法,但我不知道为了覆盖特定方法(例如.ToString)需要一些东西。我是否误解了这个问题,还是有必要?如果是这样,是什么迫使这一要求?

5 个答案:

答案 0 :(得分:9)

  • 基类不能是sealed
  • 基类中的方法必须标记为virtualabstract

答案 1 :(得分:1)

您要覆盖的方法必须声明为virtualabstract(并且处于非密封类型)。否则,您唯一的选择是隐藏

答案 2 :(得分:1)

在C ++和C#中,您必须将基类函数声明为virtual。否则,派生类中具有相同名称和签名的函数将隐藏基类版本。

答案 3 :(得分:0)

您要覆盖的方法必须标记为virtualabstract

答案 4 :(得分:0)

如果您了解多态性和继承性,那么我觉得您可能会过度思考这个问题。我的意思是C#override就像这样:

  public override double parentFunction() 
  {
     //child implementation
  }

...并且必须将父函数指定为虚拟。

如果不逐字逐句地回答问题,很难说采访者在寻找什么。我与采访者的经验是,他们只是想确保你理解一般性,但谁知道。我很想知道你是否得到了这份工作:)祝你好运!