Почему HttpServlet класс объявлен как абстрактный
HttpServlet объявлен абстрактным, потому что его методы doGet(), doPost() и другие по умолчанию возвращают HTTP 405 (Method Not Allowed). Класс предоставляет только каркас обработки HTTP-запросов, а конкретная бизнес-логика должна быть реализована в подклассе.
Это применение паттерна Template Method: service() определяет алгоритм обработки (определить тип запроса, вызвать нужный метод), а doGet()/doPost() — точки расширения. Если бы HttpServlet не был абстрактным, разработчик мог бы случайно создать его экземпляр и получить сервлет, отвечающий 405 на все запросы.
Технически в HttpServlet нет абстрактных методов — ключевое слово abstract в объявлении класса используется как защитный механизм, принуждающий разработчика создать подкласс и переопределить нужные методы.
На собеседовании: ключевое слово — Template Method pattern.
HttpServletне содержит абстрактных методов, но объявлен abstract намеренно, чтобы предотвратить создание «пустого» сервлета.