The :link
pseudo class applies to the link even when you are hovering over it. As the style with the id is more specific it overrides the others.
The only reason that the :hover
style overrides the :link
style at all is that it comes later in the style sheet. If you place them in this order:
a:hover { color: red; }
a:link { color: blue; }
the :link
style is later in the style sheet and overrides the :hover
style. The link stays blue when you hover over it.
To make the :hover
style work for the black link you have to make it at least as specific as the :link
style, and place it after it in the style sheet:
a:link { color: blue; }
a:hover { color: red; }
#someID a:link { color: black; }
#someID a:hover { color: red; }