Classes are defined using the defineClass: or subclass: templates which specify the superclass, instance variables, category, etc. Instance variables store per-object state and are declared in the class definition. Methods are defined using a message syntax and can access instance variables or return self. New objects can be instantiated using new, new:, or messages like with: that trigger class-specific initialization code.