Because that's what the abstract class is for - specifying a set of methods a child class must implement on its own, while also allowing you to specify default implementations for some methods if you so desire.
This of it like that - you have a system that accepts "plug-ins" that are defined by a class that inherits your abstract class. Why would you ever want to load a plug-in that doesn't do anything beyond the defaults (if any)? You wouldn't... you'd expect the plug-in creator to define the methods you expect, and then call them from within your system to actually let the plug-in do its thing. If you could instanciate an abstract class, you'd essentially load an empty plug-in.
You could actually not use abstract classes, and just use normal classes. However, they won't allow you to define the methods a class must implement, which is where your system may start breaking.
Life is a Race
Thanks & Regards
By
Sabari Mahesh P M
Fundaravi, if this helps please login to Mark As Answer. | Alert Moderator