在另一个具有相同函数名的抽象类中继承抽象类

本文关键字:抽象类 继承 函数 另一个 | 更新日期: 2023-09-27 18:01:06

我有两个抽象类AbstractClass1AbstractClass2,它们都应该具有相同的方法名Meth1

现在,如果我的AbstractClass1继承自AbstractClass2,该怎么办。目前,它向我抛出了一个编译时错误"Hides Inherited Abstract Member"。下面是我的代码。

 abstract class AbstractClass1 : AbstractClass2
 {
    public abstract string Meth1();
 }
 abstract class AbstractClass2
 {
    public abstract string Meth1();
 }

在另一个具有相同函数名的抽象类中继承抽象类

您可以在派生类方法上使用abstract override来避免编译时错误。

abstract class BaseAbstract
{
    public abstract string Meth1();
}
abstract class ChildAbstract : BaseAbstract
{
    public abstract override string Meth1();
}

但是请注意这不是使用abstract override的合适位置。通常在从非抽象类派生抽象类时使用抽象重写。以确保派生类实现该方法。(见此(

看看下面的代码

class BaseNonAbstract
{
      public virtual string Meth1()
      {
         // do something
         return string.Empty;
      }
}
abstract class ChildAbstract : BaseNonAbstract
{
    public abstract override string Meth1();
}

试试这个

abstract class AbstractClass1 : AbstractClass2
{
}

abstract class AbstractClass2
{
    public abstract string Meth1();
}