An abstract class is a class that cannot be instantiated and can only be inherited. It is a class that is declared with the abstract keyword and may contain both abstract and non-abstract methods. Abstract classes cannot be instantiated, and it is designed to be inherited by other classes. Abstract classes may contain static data members.