Arimac Digital interview question

Explain the difference between an abstract class and an interface in Java. When would you use one over the other?