如何解决如何实现隐藏的抽象方法?
如果抽象方法被之前的抽象继承隐藏了,我如何在具体类中实现它?我无法访问它,只能访问具有相同名称的继承抽象方法。即使被屏蔽,系统也会报告错误。下面是一个例子:
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;
}
}
解决方法
如果 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;
}
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。