OO is something you pick up slowly after a good 3 to 4 years of programming.
Universities try to force OO down your throat whilst most people are still grappling about the basics of writing code. You can only teach the basics of OO. After that, it is up to you to fully "grok" it and start bending it to your will. OO is something that takes many many years to become fluent at because it is so far reaching, with so many different patterns, practices and frameworks that can be used to properly achieve it. Look up
SOLID principles on Wikipedia.