Вот оно как:
https://habr.com/ru/articles/942582/
И автор говорит что настоящий ООП — был только в Smalltalk.
Кратко суть Smalltalk:
1. Вместо вызова методов — отправляем сообщение. Сообщение класс обрабатывает в момент исполнения и решает что с ним делать в зависимости от логики, можно передать любое сообщение, даже которое не предусмотрено (и обработать).
2. Идут до конца — примитивы и пр. — это тоже объекты классов. Даже есть концепция мета-классов — как то даже сам класс является объектом мета-класса. Более того — даже просто кусок кода — это объект класса BlockClosure — его можно передавать, изменять, наследовать и т.д.
3. Динамическая типизация: всё проверяется во время выполнения.
Просьба осудить.