出于好奇,我尝试重写基类中的抽象方法,并方法实现抽象。如下:
public abstract class FirstAbstract
{
public abstract void SomeMethod();
}
public abstract class SecondAbstract : FirstAbstract
{
public abstract override void SomeMethod();
//?? what sense does this make? no implementaion would anyway force the derived classes to implement abstract method?
}
很想知道为什么 C# 编译器允许编写“抽象覆盖”。这不是多余的吗?执行此类操作应该是编译时错误。它适用于某些用例吗?
感谢您的关注。
有一个有用的例子微软文档- 基本上,您可以强制派生类为方法提供新的实现。
public class D
{
public virtual void DoWork(int i)
{
// Original implementation.
}
}
public abstract class E : D
{
public abstract override void DoWork(int i);
}
public class F : E
{
public override void DoWork(int i)
{
// New implementation.
}
}
如果虚拟方法被声明为抽象方法,那么它对于任何方法仍然是虚拟的
类继承自抽象类。一个类继承一个
抽象方法无法访问其原始实现
方法—在前面的示例中,F 类上的 DoWork 无法调用 DoWork
在 D 类上。这样抽象类就可以强制派生类
为虚拟方法提供新的方法实现.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)