All methods have the same name but different signature since the parameters are different. There is no problem with that. JVM will call the method with signature "public static void main(String[] args)" https://docs.oracle.com/javase/tutorial/java/javaOO/methods.html