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 члены и статические члены не наследуются как экземплярные.