我有一个抽象类 ClassA,其抽象方法采用 ClassB 类型的参数。几个类派生自它。现在我添加另一个项目,它具有类似的功能,但需要稍微不同的基类 A 来派生它的几个类。主要区别:新的基类 ClassC 不应将 ClassB 作为参数,而是另一个从 B 派生的 ClassD。然后 ClassC 应该再次被几个类用作基础。
这可能吗?这更多是出于好奇。我知道通过这样做可以使用泛型:
public abstract void Method1<T>(T parameter) where T : ClassB;
...
public override void Method1<ClassB>(ClassB parameter) {
没有泛型可以吗?除了必须键入两次之外,它们还有什么缺点吗?
abstract class ClassA
{
public abstract void Method1(ClassB parameter);
}
class DerivingClasses1 : ClassA
{
public override void Method1(ClassB parameter)
{
// do something
}
}
// -------
abstract class ClassC : ClassA
{
// This would have to override Method1 of ClassA somehow,
// instead of overloading it.
public abstract void Method1(ClassD parameter);
}
class DerivingClasses2 : ClassA
{
public override void Method1(ClassD parameter)
{
// do something
}
}
// -------
class ClassB
{
}
class ClassD : ClassB
{
}