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