如何引用C#中已实现类的抽象方法
本文关键字:实现 抽象方法 何引用 引用 | 更新日期: 2023-09-27 18:24:14
下面有一个基类(a),我一直想从继承它
class A
{
abstract protected int foo();
public int foo2()
{
//do some stuff
foo();
}
}
这将不起作用,因为我不能在非抽象类中使用抽象方法。但是我如何才能实现以下目标:
继承类A的类将已经实现foo2,但继承的类必须实现foo?foo2最好是可重写的。
更新:A类不必是非抽象
只需使类A
抽象即可。抽象类可以实现一些方法。
使foo2()
成为虚拟的,则从A
派生的类可以覆盖它。
我希望您有充分的理由不让A
抽象化。改变现有非抽象类行为的首选方法是注入该行为。
interface IFoo
{
int Foo();
}
class A
{
private IFoo foo;
public A(IFoo foo)
{
this.foo = foo;
}
public int Foo2()
{
//...
return foo.Foo();
}
}
构建项目时会收到错误不能在非抽象类中定义抽象方法
异常
Error 1 ' .A.foo()' is abstract but it is contained in non-abstract class