在C#中,構造函數不能直接繼承,但可以通過使用基類構造函數初始化子類對象來實現類似繼承的效果。在子類的構造函數中,可以使用base
關鍵字來調用基類的構造函數。以下是一個簡單的示例:
using System;
// 基類
public class BaseClass
{
public int BaseProperty { get; set; }
public BaseClass()
{
BaseProperty = 0;
}
public BaseClass(int value)
{
BaseProperty = value;
}
}
// 子類
public class DerivedClass : BaseClass
{
public int DerivedProperty { get; set; }
// 使用基類無參構造函數初始化子類對象
public DerivedClass() : base()
{
DerivedProperty = 0;
}
// 使用基類帶參構造函數初始化子類對象
public DerivedClass(int value) : base(value)
{
DerivedProperty = value * 2;
}
}
class Program
{
static void Main(string[] args)
{
DerivedClass obj1 = new DerivedClass();
Console.WriteLine($"obj1.BaseProperty: {obj1.BaseProperty}, obj1.DerivedProperty: {obj1.DerivedProperty}");
DerivedClass obj2 = new DerivedClass(5);
Console.WriteLine($"obj2.BaseProperty: {obj2.BaseProperty}, obj2.DerivedProperty: {obj2.DerivedProperty}");
}
}
在這個示例中,DerivedClass
繼承自BaseClass
。DerivedClass
有兩個構造函數,分別使用基類的無參構造函數和帶參構造函數初始化子類對象。這樣,當我們創建一個DerivedClass
對象時,可以選擇使用基類的構造函數來初始化基類部分,同時還可以根據需要設置子類的屬性。