when to use abstraction and when to use interface?

when does  abstraction used and when does  interface used?

A programmer uses abstract class when some common features are shared by all objects.

A programmer writes an interface, when all the features  are implemented differently for different objects.

Answer is