繼承建構子(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)”