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