Eu já dei várias respostas sobre isso e escolhi alguma para colocar aqui. Eu preciso consolidar isso tudo e fazer algumas correções que sou capaz hoje, em um capítulo de um livro, um dia.
Em resumo, é algo difícil, muito mais do que parece, e que "ninguém" sabe o que é. Quem diz que sabe geralmente é quem menos sabe, porque isso provavelmente é crença. É um viés sobre o assunto. Eu falo muito sobre essa questão nos links abaixo. Se não tem um definição universal e canônica, então ninguém sabe, porque cada um sabe de um jeito diferente. E é preciso reconhecer isso para avançar. Se parecer fácil, está errado.
Se seguir tudo dá uma boa pincelada sobre o que realmente OO é, mas ainda precisará de muito mais estudo.
Significado da terminologia "Orientado a objeto"
Quais são as escolas de orientação a objeto existentes?
O que é "Orientado a objeto" e quais outros métodos?
Significado de "o código atuando sobre os dados" e "os dados controlando o acesso ao código"
Quando é útil separar estado de comportamento?
Troca de mensagens entre objetos, o que significa?
Quais são os pilares da programação orientada à objetos?
Quais as limitações do paradigma orientado a objetos?
Por que orientação a objetos não serve para a maioria dos cenários?
Se eu posso fazer tudo com programação estrutural, por que criaram a orientada a objetos?
Tudo que consigo fazer em POO eu consigo fazer em PE?
Qual a diferença entre uma classe e um objeto?
POO é igual em todas as linguagens?
É possível programar orientado a objeto em C?
Farei algo que muitos pedem para aprender a programar corretamente, gratuitamente. Para saber quando, me segue nas suas plataformas preferidas. Quase não as uso, não terá infindas notificações (links aqui).