Параметры конструктора и наследование
Новичок в ООП и яЯ смущен тем, как работают конструкторы производного класса при наследовании от базового класса в 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();
}
}
Что я не делаюВот почему, при вызове конструктора для производного класса, я также должен передать параметр, необходимый базовому классу. не должен»t Поле 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? Это'не назначается и не используется в каких-либо методах для моего производного класса. Почему я должен даже положить его там вообще?