Although I think that almost every reason for learning OOP using C # or Java has been considered here (pro and con):
I also consider the main reason (and this is due to Ben Voigt commenting on his belief that Java and C # are languages taught in computer science classes) - this is “size and momentum”: knowing that you have such resources like StackOverFlow and CodeProject, and a critical mass of programmers, some of whom will always “push the envelope” to explain how to use the latest “goodies” in this language ... is of great importance.
... as an example of “envelope pushers”: I think of WPF students, for example, “excellent FrameWork / DI / IOC software” and those discussions that were as mysterious to them as English cricket ...
Note. I would like to get statistics on the extent to which C # or Java are used in college graduate courses in the US and Europe: I think it can be very interesting. I would interpret Ben's comment as a very likely hypothesis, but still a hypothesis.
Interestingly, no one here proposed Objective-C as it was found on a Mac to teach OOP (acting as a fully programmed former member of Mac Cult).
I would also notice that many times when people talk about OOP, they say: not about OO design; not “design patterns”, but it’s about programming with built-in system objects, from utility libraries to GUI stuff, and often talks about the quirks and anomalies of their work in specific conditions in specific environments.
Anyone who has sweated with standard WinForms controls (ListView, TreeView, ComboBox, etc.) for several years has, imho, "learned a lot" about inconsistencies in the design of objects: from the "glass" is half full perspective, " however, is it possible that third-party software companies are thriving and innovating with ENABLES? This certainly prompted me to buy a third party toolkit that has a lot more “design consistency and integrity.”
In short: I would say that the best resources for learning OOP are a few few language books (for example, for C #, Skeet's masterpiece, "C # in Depth"). Which book would you recommend for Java-OOP? Hopefully, at best, using your key book (s) in the context of a course or mentoring. And then StackOverFlow and CodeProject come into play as fantastic resources that will help you in your own continuation of self-education.
Comment: in the study of music, you have the concept of "studies", which not only helps you (and makes you) master new techniques and musical concepts, but is also immediately useful (in the aesthetic sense in music: that is, please the ear).
imho "great book" in C # "Design Templates", using the idea of a set of graduated progressive exercises, as in musical studies, and making full use of the evolution of the language in FrameWorks 3-4, is waiting to be written ... John Skeet or Eric Lippert, but I would be just as happy if he had Jesse Liberty or Matthew MacDonald, or Richter, or Troelsen, or Sells.
It would be valuable to single out two types of “educational goals” here: to develop competent programmers whose area of expertise is platform-specific (for example, Mac, PC, Linux): and “computer scientists” come out who are able to analyze problems using a number of abstraction methods, which are oriented to algorithms and, perhaps, secondly, to the choice of which full-fledged equivalent Turing language is best suited for implementing a particular algorithm?
Or is there another "role" here of the "application model architect" that dreams in UML and works at the level of abstraction far beyond the scope of "simple coding" :)?
Meanwhile, fossils, like this writer, will continue to tinker with what they call "dinosaur dentistry," using the equivalent of duct tape and crazy glue so that archaic levels of outdated software (often from competing vendors) work together, kind of.