I didn't read the whole thread, so generally speaking:
No a class does not have to be abstract because it extends an abstract class. At some point the abstraction ends, and that point is the point...