Win a copy of Re-engineering Legacy Software this week in the Refactoring forum
or Docker in Action in the Cloud/Virtualization forum!
  • Post Reply
  • Bookmark Topic Watch Topic
  • New Topic

why cant a constructor be final?

 
Sriram Chintapalli
Ranch Hand
Posts: 59
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
Can anyone reason out why a constructor cannot be declared final. A subclass does not inherit the constructor anyways so why bother?
 
dennis zined
Ranch Hand
Posts: 330
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
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 ]
 
Sriram Chintapalli
Ranch Hand
Posts: 59
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
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.
 
  • Post Reply
  • Bookmark Topic Watch Topic
  • New Topic