не сокрытие.
Что же таится в этой инкапсуляции, кроме сокрытия, кто она без него?
интерфейс взаимодеийствия с классом создает, как я это понимаю
По сути, инкапсуляция без сокрытия это некая абстрактная связь между классами. Ведь без сокрытия мы можем рассматривать это только как некий чистый интерфейс взаимодействия (набор публичных членов). По-крайней мере мне так кажется.
Защита от непреднамеренных действий со стороны других разработчиков (или тебя). Типо есть некий класс DateTime и у него есть некое поле hour, которое не может быть меньше 0 и больше 24. И чтобы инкапсулировать этот класс, мы должны ограничить ввод hour. К примеру через свойство или get/set методы с нужными проверками. Таким образом разработчик не сможет сделать этот класс невалидным
Другими словами, инкапсуляция включает в себя, кроме сокрытия, введение ограничений (препятствий изменению/получению неверных значений) за счёт методов или тех же свойств?
Сокрытие скорее идёт как побочный эффект. IDE перестает подсвечивать поля, а компилятор ругается на доступ к закрытому полю. А так да, защита от невалидного состояния
Ну, апкаст в неком смысле вмещает в себя сокрытие элементов класса ниже.
*сокрытие части интерфейса наследника/ов
Сокрытие, как побочный эффект... Я не думал об этом в таком направлении. А теперь всё кажется естественней. Искренне благодарю, кажется я получил некое просветление. А то на долгое время у меня был какой-то барьер в понимании. Наверное из-за того, что я не верно сложил акценты изначально.
Обсуждают сегодня