Как грамотно скрывать поля у узла итерируемого объекта?

Есть класс(хэш таблица). В этой таблице есть итератор, который бегает по элементам таблицы - Нодам(Node). Для удобства работы внутри класса, сам служебный класс Node объявлен как protected. Но поля у этой ноды все public. Я запускаю цикл foreach по этой таблице. Этот цикл предоставляет мне на каждой итерации очередную ноду, но вот проблема - у ноды открыты поля, которые желательно скрыть вне класса(но часть полей нужно оставить для доступа из цикла). Но внутри класса они должны быть public, иначе поля этого служебного класса не будут видны производным классам. От туда и вопрос, как скрыть часть полей этой ноды при обходе foreach циклом? Пробовал обертки делать, но там разврат получался.

Побочный вопрос: почему foreach цикл может работать с нодами, если они объявлены как protected класс? Вне цикла их нельзя вызывать, как и должно быть.


Ответы (0 шт):