我有一个抽象类A,其中我派生了类B和C.类A提供了一个抽象方法DoJOB(),它由两个派生类实现。具有抽象类作为参数的方法
有一个类X有里面的方法,它需要调用DoJOB()。 类X可能不包含任何代码,如B.DoJOB()或C.DoJOB()。
实施例:
public class X
{
private A foo;
public X(A concrete)
{
foo = concrete;
}
public FunnyMethod()
{
foo.DoJOB();
}
}
在实例化类X欲决定哪个派生类(B或C)必须被使用。 我认为有关传递B的一个实例,或使用X.
X kewl = new X(new C());
kewl.FunnyMethod(); //calls C.DoJOB()
kewl = new X(new B());
kewl.FunnyMethod(); // calls B.DoJOB()
的我的试验表明,声明与参数A的方法是不工作的构造℃。我错过了什么吗? 如何正确实施?
(A是抽象的,它不能被实例化)
编辑: 对不起,我忘记某物。
A级是一个通用的抽象单:
abstract public class A<T> where T : A<T>
{
....
}
public sealed class B : A<B>
{
.....
}
public sealed class C : A<C>
{
.....
}
在头行 “以与一般辛格尔顿的解决方案作为一个抽象类”
你会从中得到什么错误?编译错误?对我来说似乎很好... – Marnix 2011-01-06 22:52:22
您需要更具体地说明您的“不工作”是什么意思。 – 2011-01-06 22:52:53