0

如果抽象方法被先前的抽象继承隐藏了,我如何在具体类中实现它?我没有办法访问它,只能访问同名的继承抽象方法。即使被屏蔽,系统也会报告错误。这是一个例子:

abstract class MyAbClass1
{
  abstract public int MyMethod(int x);
}
abstract class MyAbClass2 : MyAbClass1
{
  abstract public int MyMethod(int x);
}
class Myderived : MyAbClass2
{
  override public int MyMethod(int x)
  {
    return x;
  }
}
4

1 回答 1

1

如果MyAbClass2没有实现MyMethod它甚至不应该指定它 - 它仍然存在abstract。如果是这样,那么它应该使用override关键字,Myderived也可以覆盖。

abstract class MyAbClass1
{
  abstract public int MyMethod(int x);
}
abstract class MyAbClass2 : MyAbClass1
{
  // no implementation of MyMethod
}
class Myderived : MyAbClass2
{
  override public int MyMethod(int x) // this now works
  {
    return x;
  }
}

或者

abstract class MyAbClass1
{
  abstract public int MyMethod(int x);
}
class MyAbClass2 : MyAbClass1 // no longer abstract
{
  override public int MyMethod(int x) 
  {
    return x*2;
  }
}
class Myderived : MyAbClass2
{
  override public int MyMethod(int x) // this now works
  {
    return x; // or perhaps base.MyMethod(x) - 42;
  }
}
于 2021-03-04T09:44:25.150 回答