我有两个抽象类AbstractClass1
和AbstractClass2
,它们都应该具有相同的方法名Meth1
。
现在,如果AbstractClass1
继承自AbstractClass2
,该怎么办?目前它给我一个编译时错误"Hides Inherited Abstract Member"
。以下是我的代码。
abstract class AbstractClass1 : AbstractClass2
{
public abstract string Meth1();
}
abstract class AbstractClass2
{
public abstract string Meth1();
}
答案 0 :(得分:3)
您可以在派生类方法上使用abstract override
来避免编译时错误。
abstract class BaseAbstract
{
public abstract string Meth1();
}
abstract class ChildAbstract : BaseAbstract
{
public abstract override string Meth1();
}
但 请注意这不是正确使用abstract override
的地方。
通常在从非抽象类派生抽象类时使用抽象覆盖。确保派生类实现该方法。 (见this)
看看下面的代码
class BaseNonAbstract
{
public virtual string Meth1()
{
// do something
return string.Empty;
}
}
abstract class ChildAbstract : BaseNonAbstract
{
public abstract override string Meth1();
}
答案 1 :(得分:2)
试试这个
abstract class AbstractClass1 : AbstractClass2
{
}
abstract class AbstractClass2
{
public abstract string Meth1();
}