Чем представлена абстракция (принцип ООП) в Java?
===================================================

 Если инкапсуляция в Java представлена модификаторами доступа, то чем представлена абстракция? 

 Наличием классов, интерфейсов, методов. 

 Абстракция — ключевое явление в ООП  
  

Сам класс — уже абстракция чего-то, когда я создаю класс Product, то это абстракция некоторых объектов моей системы, что их отличает от всего внутреннего мира системы уже как минимум названием (и потом интерфейсом и поведением, описанным в классе).  
  

Но ключевое для абстракции — интерфейс, он есть в каждом классе (публичный и приватный), но тк у класса есть уже описание поведения и объекта, то такую абстракцию тяжело отделить, потому придумали конструкцию интерфейс — абстракция в чистейшем виде. Мы просто передаем абстракную договоренность и все, кто умеет с ней работать — работают с теми объектами, кто этот интерфейс реализует. Это полиморфизм.  
  

Также мы можем абстрагировать некий функционал от привязки к конкретному типу. И создать функционал над абстрактным (обобщенным) типом — дженерики (параметрический полиморфзм).  
  

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

 

 Посмотри про инкапсуляцию [тут](https://www.youtube.com/watch?v=yNUJ3vAeyJQ) .  

Абстрагирование — отвлечение в процессе познания от несущественных сторон, свойств, связей объекта (предмета или явления) с целью выделения их существенных, закономерных признаков. Результат абстрагирования — абстрактные понятия, например: цвет, кривизна, красота и т. д.