An abstract class will contain abstract methods that do not have an implementation. When you extend this class, sometimes you may decide only to provide implementations for some of those abstract methods . In this case you’ve extended an abstract class and yet the subclass is still abstract.