Can anyone reason out why a constructor cannot be declared final. A subclass does not inherit the constructor anyways so why bother?
Joined: Mar 07, 2003
A subclass does not inherit the constructor anyways so why bother?
Hi Sriram. Isn't that the answer to your question? Here's a text from JLS to add more about what you cannot use for constructors: Unlike methods, a constructor cannot be abstract, static, final, native, strictfp, or synchronized. A constructor is not inherited, so there is no need to declare it final and an abstract constructor could never be implemented. A constructor is always invoked with respect to an object, so it makes no sense for a constructor to be static. There is no practical need for a constructor to be synchronized, because it would lock the object under construction, which is normally not made available to other threads until all constructors for the object have completed their work. The lack of native constructors is an arbitrary language design choice that makes it easy for an implementation of the Java virtual machine to verify that superclass constructors are always properly invoked during object creation. Note that a ConstructorModifier cannot be declared strictfp. This difference in the definitions for ConstructorModifier and MethodModifier (�8.4.3) is an intentional language design choice; it effectively ensures that a constructor is FPstrict (�15.4) if and only if its class is FP-strict. [ January 28, 2004: Message edited by: dennis zined ]
SCJP 1.4<br />SCWCD 1.4
Joined: Dec 16, 2003
thanks a lot Dennis, I guessed the designers would think it wouldnt hurt to make a constructor final because it would just be redundant. Your answer really helped me clear things up about constructors on a whole thanks again.