Sobes.tech
Back to questions
Junior — Middle
65

Какие компоненты или свойства базового класса не передаются в наследующие его классы?

Answer from AI

sobes.tech AI

В C# при наследовании базовый класс передаёт своим производным классам все свои нестатические члены, кроме тех, которые объявлены с модификатором доступа private. То есть компоненты или свойства с модификатором private не доступны напрямую в наследующих классах.

Также статические члены класса не наследуются в привычном смысле, они принадлежат самому классу, а не экземплярам, поэтому к ним обращаются через имя базового класса.

Пример:

class BaseClass
{
    private int privateField = 1; // не доступен в наследнике
    protected int protectedField = 2; // доступен в наследнике
    public int publicField = 3; // доступен в наследнике
    public static int staticField = 4; // не наследуется, доступ через BaseClass.staticField
}

class DerivedClass : BaseClass
{
    public void ShowFields()
    {
        // Console.WriteLine(privateField); // ошибка компиляции
        Console.WriteLine(protectedField); // OK
        Console.WriteLine(publicField); // OK
        Console.WriteLine(staticField); // ошибка, нужно BaseClass.staticField
        Console.WriteLine(BaseClass.staticField); // OK
    }
}

Таким образом, не передаются в наследующие классы private члены и статические члены не наследуются как экземплярные.