Well, let's define dependency (for the moment) as
A depends on B when:
* B must be present for A to compile
* if B changes, A might break
So any kind of inheritance or direct reference to another type is a dependency and a form of coupling.
We can break this chain of coupling pretty easily. Let's say A has a variable of type X where X is an interface. B implements X. Now can compile and "jar up" A without B. Changing B doesn't break A. We can say we've decoupled A and B. But we've made A and B both depend on X which is something we want to watch closely.
By this definition I would disagree with "an abstract class depends on its child" because we can compile and distribute the abstract class without any children. Consider all the interfaces in
JDBC ... there's no dependency or coupling with MySQL in there.
There was mention of "modules" above, which are not clearly defined in
Java (yet). For now, jars are common units of deployment. My team recently ran into trouble with circular dependencies between two jars. Our automated build script starts from scratch, checks out the source code for one jar at a time and builds it. It's not possible to compile and build either jar without the other. Oops.
Wikipedia has a list of types of coupling. All this is pretty much just one on the list. See what you think of the others.