1. top level classes: not nested, but possibly sharing a *.java file. 2. nested classes: like Russian dolls (either static or inner). 3. static classes: no associated outer class instance. 4. inner classes: with an associated outer class instance. 5. anonymous classes: unnamed inner class defined in the middle of a method. 6. local classes: named inner class defined in the middle of a method. A local class is given a name, and is defined right in the middle of an instance method.