Why HttpServlet classs is declared as abstract class BUT with 100 % concrete functionality ?
- It is abstract because the implementations of key servicing methods have to be provided by (i.e., overridden by) servlet developer. Since it's abstract, it's instance cannot be created. 
A subclass of HttpServlet must override at least one method, usually one of these:
- doGet, if the servlet supports HTTP GET requests. 
- doPost, for HTTP POST requests. 
- doPut, for HTTP PUT requests. 
- doDelete, for HTTP DELETE requests. 
- init and destroy, to manage resources that are held for the life of the servlet. 
What happens if you dont override the methods?
- If you extend the class without overriding any any of these methods as per your requirement, you will get a useless servlet; (i.e. it will give an error response for all requests).(HTTP 405 : Method not implemented). So, if the class was not abstract, then any direct instance of HttpServlet would be useless. 
But why is it abstract?
- So the reason for making the HttpServlet class abstract is to prevent a programming error. 
- As a servlet developer, you can choose to override the functionality of your requirement (eg : doPost) & ignore other methods. 
Last updated