Empty method in abstract class I have an abstract class which holds a hook method for a template method.  Not all classes which extend this class will need to implement this method (in fact most will not, but a few will).  As such I declared the method this way:

protected void applyExtraCriteria(Object extraCriteria) {

}


Should it instead be declared this way:

protected abstract void applyExtraCriteria(Object extraCriteria);


Which one would be considered better practice?
I would declare as required by all classes. It is easy enough to leave an empty method stub in the sub class.