If an abstract class does not contain properties nor actual function implementations but only abstract functions, it should be replaced with an
interface. This is a good practice because an interface provides more flexibility, while an abstract class does not offer any benefit in this
situation.
What is the potential impact?
Flexibility of the design
Abstract classes are limited in their inheritability compared to interfaces, while they do not offer any benefit in this situation. A class can
only extend one class but can implement many interfaces. When APIs are represented by abstract classes instead of interfaces, the implementing class
must have the abstract class as its one (and only) parent class. Also, it cannot implement more than one API at once.