совокупность объектов обменивающихся сообщениями
Абстракция - это модель некоего объекта или явления реального мира, откидывающая незначительные детали, не играющие существенной роли в данном контексте.
Инкапсуляция - это способность объектов скрывать часть своего состояния и поведения от дргих объектов, предоставляя внешнему миру только определенный интерфейс взаимодействия с собой.
Наследование - это возможность создавать новых классов на основе существующих.
Полиморфизм - это способность программы выбирать различные реализации, при вызове операции с одним и тем же названием.
Композиция достигается за счет сохранения ссылки на наследуемый класс в качестве члена.
Перегрузка метода связана с определением нескольких методов с одним и тем же именем, но с разными параметрами.
это переопределение метода базового класса, чтобы он вел себя иначе, чем его реализация в базовом классе.
Параметр функции поддерживает любой аргумент этого типа или его поддипа
способность использовать один и тот же код с разными типами, предоставляется Generics
путем имплементированния интерфейса, расширения класса или перегрузке методов
В том что можно выбрать реализацию.