A class is a collection whose members either fall under a predicate or are classified by a rule. Hence, while a set can be extensionally defined only by its elements, a class has also an intensional dimension that unite its members. When the term 'class' is applied such that it includes those sets elements of which are intended to be collected without a common predicate or rule, the distinction can be indicated by calling such sets "improper class."
Philosophers sometimes distinguish classes from types and kinds. We can talk about the class of human beings, just as we can talk about the type (or natural kind), human being, or humanity. How, then, might classes differ from types? One might well think they are not actually different categories of being, but typically, while both are treated as abstract objects, classes are not usually treated as universals, whereas types usually are. Whether natural kinds ought to be considered universals is vexed; see natural kind.
There is, in any case, a difference in how we talk about types or kinds. We say that Socrates is a token of a type, or an instance of the natural kind, human being. But notice that we say instead that Socrates is a member of the class of human beings. We would not say that Socrates is a "member" of the type or kind, human beings. Nor would we say he is a type (or kind) of a class. He is a token (instance) of the type (kind). So the linguistic difference is: types (or kinds) have tokens (or instances); classes, on the other hand, have members.
The concept of a class is similar to the concept of a set defined by its members. Here, the class is extensional. If, however, a set is defined intensionally, then it is a set of things that meet some requirement to be a member. Thus, such a set can be seen as creating a type. Note that it also creates a class from the extension of the intensional set. A type always has a corresponding class (though that class might have no members), but a class does not necessarily have a corresponding type.