Это цитируемый вопрос из учебных материалов моего университета.
Мне это совершенно не имеет смысла.
Для меня крючки задаются точками в (в основном последовательных, но не только) программах, где вы можете указать свои собственные методы или обратные вызовы, которые будут выполняться.
Например, приложение имеет "on before shutdown hook", я могу зарегистрировать мой метод обратного вызова там, который сохраняет пользовательские данные на диске до выключения.
Абстрактные методы объясняются сами собой.
Для меня это совсем другое? или у любой из этих вещей есть второй смысл, о котором я не знаю? Я сделал быстрый поиск, но ничего не нашел.