Tests understanding of OOP abstraction mechanisms in Java and how their distinction has evolved.
Key differences:
public static final, methods default to public abstract (Java 8+ allows default/static methods; Java 9+ allows private methods)Rule of thumb: prefer interfaces to define contracts/capabilities; use abstract classes when common state or template-method patterns are needed.
Version-specific follow-ups: Java 8 default methods blurring the line, Java 9 private interface methods, sealed classes (Java 17) restricting hierarchies.