Class inheritance defines an object's implementation in terms of another object's implementation, working as a mechanism for code and representation sharing.
Interface inheritance or Subtyping describes when an object can be used in place of another, working as a mechanism for interface sharing without restricting to a particular implementation.