I’m new to Java and I have a beginner question:
NumberFormat is an abstract class and so I assume I can’t make an instance of it. But there is a public static (factory?) method getInstance() that allow me to do
NumberFormat nf = NumberFormat.getInstance();
I’m quite confuse. I’ll be glad if someone could give me hints on:
- If there is a public method to get an instance of this abstract class, why don’t we have also a constructor?
- This is an abstract class ; how can we have this static method giving us an instance of the class?
- Why choosing such a design? If I assume it’s possible to have an instance of an abstract class (???), I don’t get why this class should be abstract at all.
Thank you.
DecimalFormat, for example). Having a constructor for an essentially unknown number format is pretty useless.getInstance()method is a so-called factory method. It returns a matching number format for the current locale. Since it is not known what kind of sub-class is required at compile-time, it returns aNumberFormat, however, the instance itself, will be of a sub-type, obviously (since you can’t create instances of abstract classes).NumberFormatFactorysomewhere which would have the factory methods.