For me, having a use for a technique is a key to learning about it.
One example I had was a method of extracting data from a specific type of binary data file - it was quite easy to write a load of procedural functions to parse the structure, extract a record and decode it, but that meant having loads of pointers and arrays and so on passing backwards and forwards, and my calling code has to retain them all, which to me is almost as bad as using global variables. By implementing a class, all the internal stuff can be within that class and the calling code only creates a new object, calls the open method (which opens the file and decodes the index structure) and then it's just ready to read a record. When I call
read(), all I get back is the formatted data or "not found".
I'm sure there's a lot more to OOP than my example above, but the main point was really as @webmachine said, actually writing something will probably teach you more than a lot of reading.