I always thought classes are synonyms for objects
The language in the OOP literature is sometimes undefined. This does not help either because programming languages have slightly different ideas about what an object is.
A class is a template or definition from which objects (instances of this class) are created. That is, the class provides the structure, signature type, and behavior that are objects of this class (or type ... more on this later.)
An object is just a place in the memory of an instance of this class.
Wikipedia provides good documentation on this. I suggest you read it:
http://en.wikipedia.org/wiki/Class_(computer_programming )
http://en.wikipedia.org/wiki/Object_(object-oriented_programming )
In addition, there is a concept of type. A type (or interface, sometimes referred to in some literature or programming languages) is usually a collection of type / method signatures (and possibly behavior). Things like Java interfaces and pure C ++ virtual classes tend to represent types (but not exactly the same).
Then the class corresponding to this type (whether it be an interface or a pure virtual class) is an implementation of this type.
This class, an implementation of this type, is just a recipe for creating objects of this class / type in memory.
When you create an instance of a class / type, you confirm to create an instance (object) of this class in memory.
In C ++, a class is not an object, since the class itself is not created. A C ++ class is not an instance of any other class (see Definitions above).
OTH, in languages like Java, the class itself is represented by instances of the original class (java.lang.Class). Thus, class X has an object in memory (an instance of java.lang.Class) associated with it. And along with this, with the help of this "class" of the object, you can (theoretically) create an instance or create another instance (or object) of class / type X.
This can be confusing. I highly recommend that you search and read literature on classes, types, prototypes, and objects / instances.
and I'm confused as to what this means. Like classes of no objects,
As explained above. The class is not an object. An object is an instance, a piece of memory, built and initialized with a “recipe” of a class or type.
and why does it matter if the language is static?
This part of the book is a bit misleading because Java, for example, is statically typed, but classes can still be the objects themselves. Perhaps the text refers to dynamically typed languages (like JavaScript), where classes can also be objects or instances.
My suggestion is to never use the word object and just limit the dictionary to “classes” and “instances”. But this is my personal preference. Other people may disagree, and so will be.