In JAVA - abstract is a keyword that, when added to a class definition, disallows the instantiation of a class. Interface is similiar only it forces the class to have only signatures of methods and no attributes.

In C++ - its the same idea but no keywords. Once you define a pure virtual function, the class cannot be instantiated. The idea of interface exists as well, if you don't supply a body to non of the functions, the class is actually an interface. (abstract class is, in a way, a generalization of interfaces and "normal" classes).