Right now, I'd probably say no. For example, Java disallows multiple inheritance- because the implementation is a little icky. There's nothing in any OOP theories stating that multiple inheritance should not be allowed- this is Java, not OOP. Multiple inheritance is a perfectly valid part of OOP that you can never learn about using Java.
More importantly, I wouldn't use Java to teach OOP because you would come off with the impression that OOP solves every problem and it's a hammer and everything is a nail, when in reality, generic programming and functional programming both have significant advantages in certain situations. Learning about OOP is not just about learning that it can be used in X situation or Y situation, but also when it shouldn't be applied.
It will also teach that object orientation is linked to other principles- for example, objects can only be heap allocated. What is an object, and where the memory for a type is stored, are two unrelated ideas, but Java couples the two concepts- not to mention how it also couples reference vs value semantics to objects, and other things, which I find ironic, because object orientation is all about decreasing coupling.
If you want to learn about OOP, including when it's not so hot or when it's implementation goes beyond the blindingly obvious, and you don't want to know about all of the Java-specific stuff they added on, then Java isn't the right thing to do. C++ would be a much better choice- it isn't afraid to offer you alternative paradigms and let you make the choice. If you learn C++, then you will learn much, much more than if you learned Java, and you won't get confused between object orientation and memory management, or object orientation and reference vs value semantics, and that kind of thing. Of course, it's also harder, so you get what you pay for here.
Of course, having the advantage of an actual teacher cannot be underestimated.