Brad Cox e amigos adicionaram uma fina camada de Smalltalk em cima de C.
O Objective-C, portanto, tem muito mais em comum com o estilo OO de envio de mensagens altamente dinâmico do Smalltalk do que o C ++.
Uma grande diferença é que, no Objective-C, você não se preocupa muito com o que é uma classe: você se importa com as mensagens que alguma coisa entende. Você pode ter objetos que alteram o conjunto de mensagens que eles entendem, em tempo de execução.
Tendo dito que as duas línguas têm idéias muito diferentes sobre o que é OO, muitas idéias / princípios ainda são compartilhados: herança, delegação, polimorfismo, e assim por diante. Você encontrará facilmente muitos exemplos dos vários padrões de OO no código escrito em qualquer idioma.
virtual
: Um objeto nem precisa entender uma mensagem para lidar com isso. Ele pode encaminhar silenciosamente a mensagem para algum objeto interno que possa entendê-la, permitindo que o proxy transparente suporte, por exemplo, o carregamento lento de uma instância de um banco de dados.