Abstract Classes vs Interfaces

Both define contracts. Abstract classes can hold state and partial implementation; interfaces define capabilities a class can implement.

Cheat sheet

  • ▸Abstract class: can't instantiate; can have constructors, fields, concrete and abstract methods.
  • ▸Interface: methods are public; Java 8+ allows default and static methods; fields are public static final.
  • ▸A class extends one abstract class but implements many interfaces.
  • ▸Use abstract class for shared base code (IS-A); interface for capability (CAN-DO).
  • ▸C++ uses pure virtual functions (= 0) to make abstract classes.
  • ▸Marker interfaces have no methods (Serializable).

Abstract class vs Interface (Java)

AspectAbstract classInterface
MultipleExtend oneImplement many
StateInstance fieldsConstants only
ConstructorYesNo
MethodsAny accessPublic (default/static allowed)

Top 10 campus interview questions

Quick quiz

1. A Java class can implement how many interfaces?

2. Fields in a Java interface are implicitly:

3. C++ abstract class contains at least one:

4. Functional interface has exactly one:

5. Abstract classes can have constructors?