繼承建構子(Constructor),這看起來既有學問又深奧的文字
不要怕,以下我用白話文解釋一下
把繼承建構子分解後,就是 繼承 + 建構子
繼承,相信有物件導向概念的朋友應該都知道這2個字的意思
建構子(Constructor),就是用來進行物件初始化的方法
一般來說,Class B 繼承 Class A 之後就可以使用Class A所開放出來的東西
那麼如果Class B 繼承 Class A後,想要對Class A進行初始化的動作,那就需要使用繼承建構子了
先來看看程式吧,看程式就比較不會那麼文謅謅了。程式碼可於這邊下載(C#、VB.NET雙版本)
首先有一個最基本的Class,我們叫它Class A
C#版本Class A
class ClassA
{
public ClassA()
{
_InitString = "123";
}
public ClassA(string initStr)
{
_InitString = initStr;
}
private string _InitString;
public string InitString
{
get { return _InitString; }
}
public void ShowClassAInit()
{
Console.WriteLine(InitString);
Console.WriteLine("-----------------------------");
}
}
VB.NET版本Class A
Class ClassA
Public Sub New()
_InitString = "123"
End Sub
Public Sub New(ByVal initStr As String)
_InitString = initStr
End Sub
Private _InitString As String
Public ReadOnly Property InitString() As String
Get
Return _InitString
End Get
End Property
Public Sub ShowClassAInit()
Console.WriteLine(InitString)
Console.WriteLine("-----------------------------")
End Sub
End Class
接下來我們需要Class B來繼承Class A
注意到了嗎,繼承建構子的實作方式就是於Class B加入一個與Class A一樣的初始建構子
並使用base(C#語法)、MyBase.New(VB.NET語法)把初始值帶入Class A。成功於Class B內,進行初始化Class A的動作
C#版本Class B
class ClassB : ClassA
{
public ClassB()
{
}
public ClassB(string initStr)
: base(initStr)
{
}
}
VB.NET版本Class B
Class ClassB
Inherits ClassA
Public Sub New()
End Sub
Public Sub New(ByVal initStr As String)
MyBase.New(initStr)
End Sub
End Class
接下來就看看怎麼使用,跟使用的結果吧
下面使用Console來DemoC#版本Console
class Program
{
static void Main(string[] args)
{
ClassA CA1 = new ClassA();
Console.WriteLine("new ClassA()");
CA1.ShowClassAInit(); //Result:123
ClassA CA2 = new ClassA("Init AAA");
Console.WriteLine("new ClassA(\"Init AAA\")");
CA2.ShowClassAInit(); //Result:Init AAA
ClassB CB1 = new ClassB();
Console.WriteLine("new ClassB()");
CB1.ShowClassAInit(); //Result:123
ClassB CB2 = new ClassB("Init BBB");
Console.WriteLine("new ClassB(\"Init BBB\")");
CB2.ShowClassAInit(); //Result:Init BBB
Console.ReadLine();
}
}
VB.NET版本Console
Module Module1
Sub Main()
Dim CA1 As New ClassA()
Console.WriteLine("new ClassA()")
CA1.ShowClassAInit() 'Result:123
Dim CA2 As New ClassA("Init AAA")
Console.WriteLine("new ClassA(""Init AAA"")")
CA2.ShowClassAInit() 'Result:Init AAA
Dim CB1 As New ClassB
Console.WriteLine("new ClassB()")
CB1.ShowClassAInit() 'Result:123
Dim CB2 As New ClassB("Init BBB")
Console.WriteLine("new ClassB(""Init BBB"")")
CB2.ShowClassAInit() 'Result:Init BBB
Console.ReadLine()
End Sub
End Module
以上程式碼可於這邊下載(C#、VB.NET雙版本)

One thought on “在.Net中使用繼承建構子(Constructor)”