An interface declares a contract — a set of methods a type must provide — with no (or minimal) implementation. An abstract class is a partially implemented class that can hold shared state and concrete methods but cannot be instantiated. The key distinction: a class can implement many interfaces but inherit from only one class.
