Параметры конструктора и наследование

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

Ответы на вопрос(4)

Ваш ответ на вопрос