Both describe what a type can do, and choosing the wrong one makes later changes awkward. An abstract class can hold state and shared code, but a class can extend only one, while a class can implement many interfaces. Pick an interface for a capability unrelated classes share, like Comparable, and an abstract class for closely related classes with common fields. Since Java 8, interfaces can have default methods, so mention that when an interviewer asks for the differences.