Доброго времени суток участники форума. Столкнулся с проблемой при изучении языка C#. Интересует вопрос: почему при наследовании из производного класса мы можем использовать закрытые поля (обозначенные именно private модификатором) через публичные методы, унаследованные от базового класса. Я думал, что такие поля в наследовании не участвуют и соответственно в производном классе их нет. Оставлю в качестве примера код ниже:
namespace Inheritance
{
class BaseClass
{
private int a;
public int A
{
get
{
return a;
}
set
{
a = value;
}
}
}
class DerivedClass : BaseClass
{
}
class Program
{
static void Main()
{
DerivedClass instance = new DerivedClass();
instance.A = 3;
Console.WriteLine(instance.A); // 3
}
}
}
Заранее большое спасибо!
Наследование предполагает расширение базового класса. При расширении и речи быть не может, что будет теряться хоть какая-то часть базового класса. Следовательно, производный класс будет иметь все поля и методы базового класса, включая приватные и защищенные. Если бы что-то из этого не наследовал ось, то работали бы публичные методы без реализации класса (приватных полей и методов)?
Разница в том, что из производного класса нельзя обращаться напрямую к приватным полям, но это возможно с использованием геттеров и сеттеров базового класса.
Продвижение своими сайтами как стратегия роста и независимости