A constructor does not contain a
return statement and it doesn't have a return type, so it doesn't return anything. It's not the constructor that returns the new instance, it's the
new operator that creates the instance, calls the constructor to initialize it, and then returns the object.
Have a look at
section 8.1.6 of the JLS. Instance initializers, static initializers and constructors are separate from class member declarations (fields, methods, nested classes and nested interfaces). That means that a constructor is technically not regarded as a
class member.
Section 8.8 says it explicitly:
Constructor declarations are not members. They are never inherited and therefore are not subject to hiding or overriding.
I agree that superfically a constructor may look like a special kind of method, but it really isn't if you look a little deeper.
[ June 11, 2008: Message edited by: Jesper Young ]