OOP的新手,我很遺憾繼承自C#中的基類時,派生類構造函數是如何工作的。構造函數參數和繼承
首先是基類:
class BaseClass
{
private string BaseOutput = null;
public BaseClass(string BaseString)
{
BaseOutput = BaseString;
}
public virtual void PrintLine()
{
Console.WriteLine(BaseOutput);
}
}
這裏是派生類:
class SubClass : BaseClass
{
private string SubOutput = null;
public SubClass(string BaseString, string SubString) : base(BaseString)
{
SubOutput = SubString;
}
public override void PrintLine()
{
Console.WriteLine(SubOutput);
}
}
最後,該方案的主要組成部分:
class Program
{
static void Main(string[] args)
{
BaseClass theBase = new BaseClass("Text for BaseClass");
SubClass theSub = new SubClass("2nd param", "Text for SubClass");
theBase.PrintLine();
theSub.PrintLine();
Console.ReadKey();
}
}
我也不是什麼get是爲什麼,當調用派生類的構造函數時,我還必須傳遞基類所需的參數。如果沒有賦值,派生類中的BaseOutput字段不應該保持爲空嗎?爲什麼不能像這樣工作:
public SubClass(string SubString) : base(BaseString)
此外,在這個派生類中調用構造函數的時候,第一個參數必須命名一樣的一個基類,否則它拋出一個錯誤。如果我是在派生類中定義名爲AnotherString新的字符串變量,爲什麼不這項工作:
public SubClass(string AnotherString, string SubString) : base(BaseString)
最後,當你這樣做的正確方法,並輸入了這...
public SubClass(string BaseString, string SubString) : base(BaseString)
... SubClass構造函數中用到的第一個參數是什麼?它沒有被派生或用於我的派生類的任何方法。爲什麼我甚至不得不把它放在那裏呢?
直到您調用子類構造函數爲止,它的存儲時間爲秒。然後用你的「2nd param」參數字符串覆蓋它。 –