Я считаю и понимаю, что термин «инкапсуляция» («инкапсуляция») - это искусство / наука улавливания сущности чего-либо с целью демонстрации. Фактически, по определению - инкапсулировать - значит упаковывать что-либо или заключать в другой контейнер. Поэтому термин «инкапсуляция» будет означать принятие сути того, чего вы пытаетесь достичь, и упаковку его в полезную форму, чтобы его можно было повторно использовать по мере необходимости.
Таким образом, для интерпретации это будет означать упаковку материала в форме, которая сделает его более полезным позже.
Так что на самом деле ... истолковывайте это так, как считаете нужным. Я вижу это как набор алгоритмов и утилит и создание структуры классов, которую можно использовать в качестве API в других проектах. Этот инкапсулированный код может быть унаследован и / или расширен, чтобы сделать его полезным для измененных целей без изменения основной сущности API.
Следовательно, абстракция, полиморфизм и наследование являются не формами инкапсуляции, а формами расширения и модификации инкапсулированного кода.
Различные формы инкапсуляции означают модификаторы свойств, методов, полей и классов - это общедоступные, частные, статические, виртуальные (в C #). Все остальное (то есть перегрузки, переопределения, тени) является модификацией или расширением этой инкапсуляции.
Вы можете считать модифицированный код инкапсуляцией, которая затем может быть унаследована / обобщена / расширена, но пакет , который должен быть расширен, является инкапсулированным продуктом.