As eraggo said, an interface -- in the C++ class sense -- is a class with only pure virtual methods (no implemented method, no data members)
A super class = base class = parent class
As interfaces can't be instantiated on their own, they serve as super/base classes of a class which want to implement them. The derived class does all the actual work.
For example, if you want to implement a program which connects to all available types of database, you could define an interface IDatabase (some conventions use an I prefix for all interface classes)
Then you could implement a class that connects to a MySQL database, another that connects to a SQLite database, ... all of which derive from IDatabase. But the program would only ever care about the functions in IDatabase, rather than specifics of any particular SQL implementation.
If you functionality which is common to all types of database, it could be factored into a base class of MySQL, SQLite, ... Then you'd have
MySQLDatabase -> Database -> IDatabase |
Here Database is a super class of MySQLDatabase, and the interface IDatabase is a super class of Database.
In practice, Database is likely to be abstract. That is, it has some (but not all) pure virtual methods, and is likely to have data members.
Andy
P.S. All interfaces are abstract classes, but not vice vera.