我想在C#程序中创建一个覆盖现有虚方法但仍保持方法虚拟的方法,以便从中继承的任何类都可以进一步扩展该方法。
我可以在方法声明中同时使用override和virtual吗?如果是这样,我将它们放入哪个订单?
例如
public override virtual void method()
OR
public virtual override void method()
由于
答案 0 :(得分:2)
This is a good post解释你在问什么。基本上,如果在基类virtual
中创建方法,则任何派生类都将能够覆盖该方法(无论派生有多深)。没有必要继续为派生类中的方法指定virtual(事实上,我认为你不能这样做)。使用sealed
说明符禁止在派生类中重写该方法。
答案 1 :(得分:1)
如果方法是虚拟的,则任何子类都可以覆盖它。您无需将其重新声明为虚拟。
https://docs.microsoft.com/en-us/dotnet/csharp/language-reference/keywords/virtual