(Some languages have objects but no classes. In these languages, objects are not restricted to structure provided by classes, and can be changed at will. This less common technique is called object-based programming.)
Classes are often related in some way. The most popular of these relations is inheritance, that is, all objects of one class, called child class or subclass, belong not only to this class, but also to other class, called parent class or superclass. For example all class "Button" (some specific kind of widget) may be subclass of class "Widget" (anything that can be displayed by windowing system), so all buttons are, by definition, interchangable with widgets. This technique is often used to add some abstraction.
Other popular technique is containing, when all objects of some, containing, class contain object of some other, contained, class. For example Window class may contain TitleBar, Menu and Contents classes, so every Window object contains some TitleBar object, some Menu object and some Contents object. Containing is often used instead of multiple inheritance.
Some programming languages (for example C++) allow multiple inheritance - they allow a child class to have more than one parent class. This technique has been criticized by some for its unnecessary complexity and being hard to implement efficiently, though some projects have undoubtedly benefited from its use. Java, for example has no multiple inheritance, its designers feeling that it was more trouble than it was worth.
See also: [Object-oriented programming]?
For other meaning of word class, see Class.