@CodeOfYourLIfe

Наследование private полей?

Некоторое время изучаю C # и остановился на главе "наследование", возможно позже этот вопрос рассматривается подробнее но хотелось бы получити ответ сейчас
class B
   {
      private int b;
      public int GetSetb { get { return b; } set { b = value; } }
   }
   class C : B
   {       
   }

Переменная b определена как private и насколько я понимаю не принадлежит классу C но когда я public свойством GetSetb присваиваю ей значение такой код работает и я могу вывести b хотя оно (насколько я понимаю) не принадлежит классу C
  • Вопрос задан
  • 855 просмотров
Решения вопроса 1
profesor08
@profesor08
Так ты паблик методом меняешь приватное свойство. Все в норме. У тебя нет прямого доступа к переменной, но при помощи метода, ты его предоставляешь. И в нем можешь делать какие-то проверки. Аналогично не будет работать b.b, но будет b.GetSetb
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
byte916
@byte916
Дочерний класс ничего не знает про приватные поля родительского, и может содержать одноимённые поля/методы/свойства, причём не обязательно такого же типа и с таким же модификатором доступа.
Когда вы создаёте переменную с типом дочернего класса, то у вас отрабатывают все родительские конструкторы, и в памяти создаются все поля родительских классов. Они необходимы для работы всех унаследованных методов и свойств, но напрямую получить доступ к приватным полям нельзя.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы