Intermediate #oop #design #vocabulary

Interface vs Abstract Class in OOP English

"Interface" and "abstract class" are two of the most commonly misused OOP terms by non-native English speakers. The vocabulary around them — implements, extends, abstract method, is-a, can-do — has precise meaning in technical discussion.

The core distinction to memorise
  • Interface = a contract / capability ("can-do"). A class implements an interface. Naming: often ends in -able (Serializable, Comparable, Runnable)
  • Abstract class = a shared base with partial implementation ("is-a"). A class extends an abstract class.
  • implements → interface. extends → class (abstract or concrete).
  • Abstract method = signature only, no body. Concrete method = has a body.
  • Cannot instantiate an abstract class directly — it must be subclassed.
0 / 5 completed
1 / 5
A Java developer explains a design decision in a code review:

"I used an ___ here because multiple unrelated classes need to implement the same contract — Serializable, Comparable, and Printable. They share no common behaviour, just an obligation."

Which construct best fits this scenario?