Сокрытие и инкапсуляция данных в чём разница

Знаю что это разные понятия, но объяснения толкового в чем разница не нашел.

Инкапсуляция - одна из основных парадигм ООП, которая, по сути, представляет собой способность языка скрывать определённые участки кода в блоки, забирая тем самым возможность у пользователя (или любого другого стороннего субъекта) нарушать целостность данного кода, вмешиваться в реализацию и тд. Основной единицей инкапсуляции в C# является класс. Инкапсуляция позволяет качественно структурировать код и помогает обезопасить его от многих возможных проблем и вопросов, касательно защиты данных и информации.

Итак, если инкапсуляция обеспечивает своего рода целостность объекта, то сокрытие - скрывает детали о процессе. Для "настройки" доступа к данным в классе и к классу непосредственно используются так называемые модификаторы доступа. Так вот использование этих модификаторов доступа и есть сокрытие.

Термин "сокрытие", как правило, употребляется в контексте методов. Сокрытие метода представляет собой определение тела метода в классе-наследнике, сигнатура которого соответствует сигнатуре метода в базовом классе. Для техники сокрытия применяется ключевое слово "new".

Пример сокрытия метода.

    class Animal
    {
        public void Say()
        {
            Console.WriteLine("*Some sounds*");
        }
    }
    class Cat:Animal
    {
        public new void Say()// the usage of hiding technique
        {
            Console.WriteLine("Miew!");
        }
    }

Вообще, говоря о сокрытии, лучше использовать данный термин в контексте именно сокрытия метода, потому что нет какого-то определённого общепринятого правила отличия инкапсуляции и сокрытия, и на этому почве могут возникать всякие разногласия.

Подробнее об основах и парадигмах языка C# Вы можете узнать на видеокурсах C# Starter и C# Essential