Я пытаюсь в проекте использовать личные значения в моих внутренних функциях. Раньше я использовал только общедоступные, но заметил, что запутывание работает намного лучше при использовании как можно большего количества личных параметров.
Мой вопрос касается классов Parent / Child.
В моем основномВ классе я определяю все параметры следующим образом:
public class MyFatherClass
{
private long id = -1;
public long ID { get { return this.id; } set { this.id = value; } }
...
}
Итак, во всех внутренних функциях я получаю доступ к своему личному значению, а не к общему.
Затем в моем дочернем классе я просто добавляю параметрыспецифично для дочернего класса.
public class MyChildClass : MyFatherClass
{
private long anotherParameter = -1;
public long AnotherParameter { get { return this.anotherParameter; } set { this.anotherParameter = value; } }
...
}
Просто я вижу, что в моем родительском классе я могу без проблем получить доступ к id
и ID
, но из дочерних классов я могу получить доступ только к ID
(поскольку id
является приватным).
Если я правильно понял, мне нужно заменить все private
на protected
в родительской программе, так что это решит проблему? Чего я не понимаю, так это того, что код работает, даже если я оставлю это так. Почему у меня не появляется сообщение об ошибке, когда я задаю значение ID
в дочернем классе, предложение this.id=value
выполняется, но как я могу получить к нему доступ из моего дочернего класса, если он закрытый?
Я сейчас сомневаюсь, могу ли я просто добавить private id
в каждый дочерний класс или я могу установить id
для защищенного в моем родительском классе?
Спасибо за ваши объяснения.
Редактировать, просто добавив скриншот моего перевернутого кода после запутывания, чтобы вы могли понять разницу в том, как скрываются закрытые / открытые методы / поля