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)
| Aspect | Abstract class | Interface |
|---|---|---|
| Multiple | Extend one | Implement many |
| State | Instance fields | Constants only |
| Constructor | Yes | No |
| Methods | Any access | Public (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?