Wilkes Joiner thinks that Smalltalk marks out the best path to really getting OO - I like this segment of his post:
Sometimes, I feel the best way to understand OO is to learn Smalltalk. It is such a radically different language and environment that it forces you to think differently. I don't mean to imply that if you've never used Smalltalk then you don't really understand OO. I just think that it can speed up the learning process. My recommendation for anyone new to OO or wanting to sharpen their skills is to download Squeak or VisualWorks, grab a copy of Kent Beck's Smalltalk Best Practice Patterns, and write some code. I've created a very short Squeak tutorial, complete with videos, to get a developer up and running as short of time as possible. There are tons of other resources available out there. Go. Learn.
Warning: The first time I saw Smalltalk was free download of VisualWorks in 2000. I was learning J2EE at the time and my immediate reaction was, "We've been had!" Learning Smalltalk can leave you with a huge level of disappointment with the current "state of the art" languages.
Heh - "We've been had". I like that :)