В случае HttpServlet
дело в том, что программисты сервлетов обычно не хотят, чтобы их сервлет поддерживал все 4 из основных методов HTTP (POST, GET, PUT, DELETE), поэтому было бы неудобно абстрактные методы doGet()
, doPost()
и т. д., поскольку программисты будут вынуждены реализовывать методы, которые им не нужны. Поэтому HttpServlet
обеспечивает реализацию по умолчанию для всех тех методов, которые ничего не делают, кроме как возвращают код состояния ошибки клиенту. Программисты могут переопределить нужные им методы и не беспокоиться об остальном. Но на самом деле использование самого класса HttpServlet
не имеет смысла (поскольку он ничего не делает полезного), поэтому он abstract
.
И у вас есть отличный пример того, когда может иметь смысл иметь абстрактный класс без какого-либо абстрактного метода.