Methods can have any valid return type, or no return type, in which case the return type is given as void . Constructors have no return type, not even void . Finally, in terms of the signature, methods and constructors have different names. If the Java program follows normal conventions, methods will start with a lowercase letter, constructors with an uppercase letter. A method uses this to refer to the instance of the class that is executing the method.
Static methods belong to the class as a whole, rather than to an instance.
Constructors use this to refer to another constructor in the same class with a different parameter list. In the code, there are two constructors. The first takes a String input to name the instance. Constructors use super to invoke the superclass's constructor. The new Java programmer may stumble when the compiler automatically supplies code for constructors.