Both interface and abstract class follow "writing code for interface then implementation" design principle which adds flexibility in code which is quite important to tackle with changing requirements. Here are some pointers which help you to answer this question:
1. In Java we can only extend one class but implement multiple interfaces. So if we extend a class we may lost our chance of extending another class.
2. Interfaces are used to represent adjective or behavior e.g. Runnable, Clonable, Serializable etc. So if we use an abstract class to represent behavior our class won't be Runnable and Clonable at same time because we cannot extend two classes in Java but if we use interface our class can have multiple behavior at the same time.
3. At a critical time application prefers abstract class as it is slightly faster than interface.
4. If there is a genuine common behavior across the inheritance hierarchy which can be coded better at one place, then abstract class is preferred. Sometimes interface and abstract class can work together also where we define function in interface whereas default functionality in abstract class.