An abstract class is a base class that is meant to be inherited from but cannot be instantiated. It may contain implemented and unimplemented members, with unimplemented members denoted as abstract. Derived classes must implement all abstract members. An interface defines a contract that classes can implement but contains no implementation. Classes implementing an interface must provide method bodies for all interface members. Interfaces can inherit other interfaces.