A hook is an old term, probably dating to before the 1980s. It's not clear from your question if "in Java" applies to both Hooks and Abstract Methods, but if I were a professor (!), I would think it's important to understand the history of hooks (before Java).
There's a Wikipedia page that goes into great detail about Hooking. Personally, when I think of hook, I think of mechanisms that allow run-time customization.
Here are a few definitions found at http://www.tldp.org/LDP/Linux-Dictionary/html/h.html
Hook
A feature included in a software or hardware product to enable hobbyists and programmers to add their own custom features. From QUECID
hook
n. A software or hardware feature included in order to simplify later additions or changes by a user. For example, a simple program that prints numbers might always print them in base 10, but a more flexible version would let a variable determine what base to use; setting the variable to 5 would make the program print numbers in base 5. The variable is a simple hook. An even more flexible program might examine the variable and treat a value of 16 or less as the base to use, but treat any other number as the address of a user-supplied routine for printing a number. This is a hairy but powerful hook; one can then write a routine to print numbers as Roman numerals, say, or as Hebrew characters, and plug it into the program through the hook. Often the difference between a good program and a superb one is that the latter has useful hooks in judiciously chosen places. Both may do the original job about equally well, but the one with the hooks is much more flexible for future expansion of capabilities (EMACS, for example, is all hooks). The term `user exit' is synonymous but much more formal and less hackish. From Jargon Dictionary
hook
The technique of inserting code into a system call in order to alter it. The typical hook works by replacing the function pointer to the call with its own, then once it is done doing its processing, it will then call the original function pointer. From Hacking-Lexicon
As for Abstract methods in Java, it was pretty well explained in Bert F's answer. I'll stress that unlike the general notion of hooks (which allows customization), abstract methods require specification, meaning there is no default definition.