我有一些保護成員的抽象基類的變量,但沒有抽象成員:聲明一個抽象類類型
internal abstract class BaseClass
{
protected readonly string Var1;
protected readonly string Var2;
protected BaseClass(string var1, string var2)
{
Var1 = var1;
Var2 = var2;
}
protected int DoSomething1(string s)
{
}
}
和實現這個基類,並有各自不同的一些具體方法的一些類:
internal sealed class Child1:BaseClass
{
internal Child1(string var1, string var2)
: base(var1, var2)
{
}
internal bool DomeSomethingSpecificForChild1(int i)
{
}
}
現在我有另一個類,我想有BaseClass
類型的變量,取決於什麼,我需要的,與兒童型intantiate它。 但是這不起作用,因爲不知道具體的方法。
public class MyClass
{
private BaseClass myBaseClass;
public bool DomeSomethingSpecific(int i)
{
myBaseClass = new Child1("a","b");
myBaseClass.DomeSomethingSpecificForChild1(i);
}
}
有沒有一種方法可以完成我想要的功能? 或者我必須在MyClass
的方法的內部範圍內聲明我的變量嗎?
public class MyClass
{
private BaseClass myBaseClass;
public bool DomeSomethingSpecific(int i)
{
var child1 = new Child1("a","b");
myBaseClass.DomeSomethingSpecificForChild1(i);
}
}
但這種方式我不確定該類實現BaseClass
。
接口是不是一種選擇,因爲我希望它保持內部的,不公開, 我不想基類被實例化,所以我認爲抽象會在這裏一個不錯的選擇..
您的代碼不會工作爲的是,你必須標記功能虛擬要在子類中重寫,也需要在定義子類中的函數時使用「覆蓋」關鍵字 – MSUH
@MSUH我知道,但事情是我不想重寫任何方法。我已經將每個類的memthods與baseclass中的protected方法放在一起。在孩子班裏,我可以放任何我喜歡的東西。我只是想確保我在「MyClass」中實例化的類確實實現了「BaseClass」。 – Koen
然後你需要檢查 如果(child1是BaseClass){child1.DomeSomethingSpecificForChild1(1);} – MSUH