Today I was thinking that Java should be one of the first languages you should learn in order to understand OOP. One of the most common questions in a hiring process is "what is the difference between an abstract class and an interface?". If you have implemented them in Java, you can tell the difference. This also applies for other programming languages like C#. Sure, you can start with Python. However, I think that OOP concepts are better explained when using Java.