An abstract class is a class that you can't use to create objects. It's main use is to let other classes inherit from it. An abstract class has at least one pure virtual function. If a class that inherits from an abstract class doesn't provide a definition of all the pure virtual functions it is itself also an abstract class.
When talking about the interface of classes I think you can say it's all the public members that you are supposed to use to interact with the class from outside. An abstract class is often used to define an interface (a minimum set of functions) that its subclasses must provide.
The C++ equivalent of an interface in Java is an abstract class that's only got functions which are public and pure virtual, and no member variables. I don't know what "pure virtual class" means but if I heard it I would assume this is what they meant.
These operators << and >> are not members, but they are supplied with Foo and affect how Foo can be used. Therefore, part of interface. (The example is not polymorphic though.)