I think the wording of the question is too abstract to give a definite answer of yes or no.
In general, there is nothing wrong with abstract classes. The trouble is that people abuse them. How to identify improper use? Rather, what is the proper use of abstract classes?
To do this, we must remember that OO is a way of modeling the “real world”: good designs make models easy to understand, bad designs are difficult to give. Moreover, good OO constructs can be expanded in directions that are likely to extend to the model problem. (I'm not talking about the extends key here.)
What the abstract method says: other methods declared in this class do not make sense without this. While the interface says that for X you need at least these methods.
So, while the abstract method is a way of expressing implementation requirements, the interface defines the role that anyone who implements it can play a role.
Sometimes you need one, another time when you need another.
source share