A hook - это старый термин, вероятно, датируемый до 1980-х годов. Из вашего вопроса не ясно, применимо ли «на Java» и к Хукам, и к абстрактным методам, но если бы я был профессором (!), Я бы подумал, что важно понимать историю хуков (до Java).
Есть страница в Википедии, в которой подробно рассказывается о Хукинге . Лично, когда я думаю о hook , я имею в виду механизмы, которые позволяют кастомизация во время выполнения .
Вот несколько определений, найденных на http://www.tldp.org/LDP/Linux-Dictionary/html/h.html
Крючок
Функция, включенная в программный или аппаратный продукт, позволяющая любителям и программистам добавлять свои собственные пользовательские функции. От QUECID
крюк
п. Программная или аппаратная функция включена для упрощения последующих дополнений или изменений пользователем. Например, простая программа, которая печатает числа, может всегда печатать их в базе 10, но более гибкая версия позволит переменной определять, какую базу использовать; установка переменной в 5 заставит программу печатать числа в базе 5. Переменная является простым хуком. Еще более гибкая программа может исследовать переменную и рассматривать значение 16 или меньше как основу для использования, но обрабатывать любое другое число как адрес предоставленной пользователем подпрограммы для печати числа. Это волосатый, но мощный крючок; затем можно написать подпрограмму для печати чисел, скажем, римскими цифрами или ивритскими символами, и подключить ее к программе через хук. Часто разница между хорошей программой и превосходной заключается в том, что последняя имеет полезные хуки в разумно выбранных местах. Оба могут выполнять первоначальную работу примерно одинаково хорошо, но тот, у которого есть хуки, гораздо более гибок для будущего расширения возможностей (например, EMACS - это все хуки). Термин «пользовательский выход» является синонимом, но гораздо более формальным и менее хакерским. Из жаргонного словаря
крюк
Техника вставки кода в системный вызов для его изменения. Типичный хук работает, заменяя указатель функции на вызов своим собственным, затем, как только он завершит выполнение своей обработки, он затем вызовет исходный указатель на функцию. Из хакерского лексикона
Что касается абстрактных методов в Java , это было довольно хорошо объяснено в ответе Берта Ф. . Подчеркну, что в отличие от общего понятия о хуках (которое допускает настройку ), абстрактные методы требуют спецификации , что означает отсутствие определения по умолчанию.