Чем в ООП отличается абстракция от инкапсуляции?
инкапсуляция - включение в класс данных (или других классов) с ограничением доступа к ним. Например, класс "ведро" может инкапсулировать в себе класс "мусор" и предоставлять методы "добавить мусора" и "опустошить ведро", но не давать никому трогать сам "мусор".
абстракция - представление объекта реального мира в виде абстракции, урезанной до его функциональности в некотором контексте. Еще может иметься ввиду возможность определять заголовки методов без их реализации, но это вряд ли. Смотри пример с ведром. Если с точки зрения задачи мусор трогать нельзя, эта функция не реализуется.
Инкапсуляция это разделение на public и private, грубо говоря просто работа с разграничением доступа для данных внутри класса или для разных классов.
Абстракция нужна для тяжелых задач, когда у тебя объект дом наследуется от объекта кирпич, но сам по себе объект кирпич ничего не делает, а дом выполняет некие функции.
Грубо говоря, абстракция это лишь объявление класса без данных, лишь с некими объявленными методами без тела, который в дальнейшем будет использоваться как базовый для других классов, при этом в абстрактном ты можешь объявить также и методы класса, тобишь в "абстрактном классе кирпич", может быть объявлен метод "рассыпаться", соответственно "дом", наследуясь от "кирпич", также будет должен иметь этот метод, но из-за абстрактности он будет обязан его переопределить.
Ну вот тебе пример для абстрактности, инкапсуляция здесь это наличие private, public, protected.
А абстракция - класс anyfunction с методом interpretate, который для каждой функции переопределяется (override) по своему.

Пример абстракции
Предположим, вы хотите создать банковское приложение и вас просят собрать всю информацию о вашем клиенте. Есть вероятность, что вы получите следующую информацию о клиенте:
ФИО
Адрес Проживания
Номер телефона
Налоговая информация
Это те данные о пользователе, что нам нужны!
Ненужные данные:
Любимое блюдо
Любимый актер
Любимая музыка
Предпочтение в стрижке
Но не вся вышеуказанная информация необходима для создания банковского приложения.
Итак, вам нужно выбрать из этого пула только полезную информацию для вашего банковского приложения. Такие данные, как имя, адрес, налоговая информация и т. д., имеют смысл для банковского приложения.
Пример абстракции в ООП
Поскольку мы извлекли/удалили/выбрали информацию о клиенте из более крупного пула, этот процесс называется абстракцией.
Однако одна и та же информация после извлечения может быть использована для широкого спектра приложений. Например, вы можете использовать одни и те же данные для заявления в больницу, приложения на портале вакансий, государственной базы данных и т. д. с небольшими изменениями или без них. Следовательно, они становятся вашими основными данными. В этом преимущество абстракции.
Пример инкапсуляции
Возьмём пример мобильного устройства. С помощью мобильных устройств вы можете выполнять различные функции, такие как фотографирование, отправка сообщения, запись видео/аудио, доступ к Интернету и многое другое.
Упомянутые выше функции являются функциями большинства смартфонов. Однако вам не нужно понимать детали внутреннего функционирования этих функций перед использованием этой программы. Например, вам не нужно знать, как ваша камера рассчитывает гамма-коррекцию или распознает человеческое лицо на изображении. Вам просто нужно изучить интерфейс программного обеспечения. Это инкапсуляция.