ओओपी के लिए नया और मैं उलझन में हूं कि सी # में बेस क्लास से विरासत में प्राप्त होने पर व्युत्पन्न-श्रेणी के रचनाकार कैसे काम करते हैं।कन्स्ट्रक्टर पैरामीटर्स और विरासत
पहले आधार वर्ग:
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 BaseClass
{
private string BaseOutput = null;
public BaseClass(string BaseString)
{
BaseOutput = BaseString;
}
public virtual void PrintLine()
{
Console.WriteLine(BaseOutput);
}
}
यहाँ व्युत्पन्न वर्ग है
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();
}
}
मुझे नहीं पता क्या इसलिए, व्युत्पन्न कक्षा के लिए कन्स्ट्रक्टर को कॉल करते समय, मुझे बेस क्लास की आवश्यकता वाले पैरामीटर को भी पास करना होगा। व्युत्पन्न कक्षा में बेसऑटपुट फ़ील्ड को बस शून्य पर सेट नहीं करना चाहिए यदि कोई मान निर्दिष्ट नहीं किया गया है? क्यों इस काम की तरह कुछ नहीं कर सकते हैं:
public SubClass(string SubString) : base(BaseString)
इसके अलावा, जब इस व्युत्पन्न वर्ग में निर्माता बुला, पहले पैरामीटर आधार वर्ग में से एक के रूप में एक ही नाम दिया गया है या फिर यह एक त्रुटि फेंकता है। अगर मैं व्युत्पन्न वर्ग में एक नई स्ट्रिंग चर AnotherString बुलाया परिभाषित करने के लिए थे, क्यों करेंगे यह काम नहीं:
public SubClass(string AnotherString, string SubString) : base(BaseString)
अंत में, आप इस सही तरीके से करते हैं और यह पता टाइप करते ...
public SubClass(string BaseString, string SubString) : base(BaseString)
... उप-क्लास कन्स्ट्रक्टर में पहला पैरामीटर क्या है? इसे मेरे व्युत्पन्न वर्ग के लिए किसी भी तरीके से असाइन या इस्तेमाल नहीं किया जा रहा है। मुझे इसे बिल्कुल भी क्यों रखना है?
इसे स्प्लिट सेकेंड के लिए संग्रहीत किया जाता है जब तक आप सबक्लास कंस्ट्रक्टर को कॉल नहीं करते। फिर आप इसे अपने "2 पैरा" पैरामीटर स्ट्रिंग के साथ ओवरराइट करते हैं। –