# What's the difference between subtyping and inheritance?

In object-oriented programming, I have learned the concept of subtyping and inheritance.
I thought they're the same thing, in the beginning. But I was told that they're totally different.

So what's there difference? What's there relationship?