使用模板重写基类的抽象类
本文关键字:基类 抽象类 重写 | 更新日期: 2023-09-27 18:35:43
我有一个带有模板的基类。在此类中,有一个抽象方法,其返回类型为模板中的类型(见下文)。
我希望创建一个新的类,派生,它继承自这个基类,它(如预期的那样)必须"覆盖"该方法。
我的问题是如何声明和实现派生类和"重写"方法?
提前感谢分配,
家伙。
public abstract class Base<MyType>
{
protected abstract MyType Foo();
}
public class Derived : Base ?????
{
protected override MyType Foo() ?????
{
return new MyType();
}
}
只需指定泛型基类的实际类型,即:
public class Derived : Base<MyType>
{
protected override MyType Foo()
{
// some implementation that returns an instance of type MyType
}
}
其中MyType
是要指定的实际类型。
另一种选择是将派生类保留为泛型,如下所示:
public class Derived<T> : Base<T>
{
protected override T Foo()
{
// some implementation that returns an instance of type T
}
}
必须为Base
指定具体类型或使Derived
也泛型:
public class Derived : Base<int>
{
protected override int Foo();
{
return 0;
}
}
或通用版本:
public class Derived<TMyType> : Base<TMyType>
{
protected override TMyType Foo();
{
return default(TMyType);
}
}
以相同的方式声明它:
public class Derived<MyType> : Base<MyType>
{
protected override MyType Foo()
{
return new MyType();
}
}