abstract class vs private constructor

7.7k views Asked by At

I have a java class which has only static methods and fields, so I don't want any object to be created for that. I can acheive this in two ways,

  1. make class abstarct.
  2. use private constructor.

Which of the two is better way?

1

There are 1 answers

1
codingenious On BEST ANSWER

You should go with private constructor.

If your class is abstract, it can be extended and objects can be created. As per my understanding from the question, what you want is non instantiable class.

from Item 4 of Effective java :

Attempting to enforce noninstantiability by making a class abstract does not work. The class can be subclassed and the subclass instantiated. Furthermore, it misleads the user into thinking the class was designed for inheritance