We use abstract classes when the base class can’t have concrete implementation and that we need the derived class to fully implement it. If at least one of the member is abstract, then the class will need to be declared as abstract. If a class derives an abstract class, then it needs to override all (only) the abstract members declared in the base class. A class can only derive one abstract class.Interfaces on the other hand, is not a class and does not have any (none) concrete member implementations nor can have access modifiers. All members need to be defined in the class that extends the interface. A class can implement multiple interfaces.