我有一個抽象類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