No. Header Files and interfaces were constructed in C long before C++. A common methodology of doing this in C land is through opaque types. Where an object has a pointer to something that is defined as char** or char[x] only denoting the size for you so you can't see it. Good examples include most anything related to Sybase and IBM middleware. You can't 'construct' objects directly, you have to go through their factory methods.
In C++ this is often realized via the Pimpl pattern and private members. While you can still see some of the bits; you can still program against the interface. Furthermore not EVERY type will be exposed to you. Its not as cut and dry.
Like anything else there are trade-offs. With Interfaces ( which more accurately turns into a templated class IMHO) every single function has to be defined over and over again for every child class; this is good for run-time performance. You can also do a abstract base class composed entirely of pure virtual functions; and this is indeed in many ways an interface; except you've also taken on the cost of virtual function look-ups for everything, some people don't like this.
You could argue points both ways till the cows come home... people write exhaustive papers on this stuff.
In the end I would argue you are taking Java too literally as to what an INTERFACE is. While there often isn't a concrete thing in a header that says literally "i am an interface" its often there and can be gleaned and discovered purely from the headers.
It's also noteworthy as an interface because with the headers and shared object you can know how to 'use' the classes and compile against them without having the source code. So again, it is an interface; just not always as "pure" as the one you see in java.