As I became more experienced, I started understanding abstract concepts better because I have already seen more real world things. I can now quicky think of my own examples in my head.
(Aside: This is why I think you should work first, study later. University deals with abstract concepts, but without experience these abstract concepts often mean nothing to you)
Come to think of it, maybe I'd argue even stronger: when I was younger, I had a hard time understanding programming problems that were explained in terms of 'foo / bar' classes or function names. 'Applied' examples with cars and wheels made more sense, even if I could easily have come up with 'not every car has 4 wheels' counterarguments. Nowadays, I like foo / bar better, because they expose the problem directly, without an additional layer of real-world application, but only because I've gotten better at abstract reasoning.