Abstract base classes are NOT interfaces. Abstract classes are about sharing implementation for behavior, interfaces are about consumption/interaction contracts. Hinting on abstract classes, in my experience, often results in abstraction leaks. Depend on interfaces instead 👍