Ramon Leon explains the key thing that makes Smalltalk different than languages like Java, C# (et. al.): Everything is an object, and objects communicate by sending messages:
Constructors, in Smalltalk, are simply a convention; the
language has no “new” keyword. In Smalltalk, your
classes themselves, are objects, singletons in fact; they are the
only instance of their meta class. This might sound weird, so lets
look at an example. Say we declare a Person class
Object subclass: #Person
instanceVariableNames: 'firstName lastName'
category: 'OnSmalltalk'
First, notice that this is simply a method call on the object
class (there is no special syntax for creating classes), which
itself is an object. This creates two classes in the runtime image,
one called “Person” and one called “Person
class”. The class “Person” is the sole instance
of the class “Person class”. “Person class”
is an instance of the class “Metaclass”.
Ramon goes on to explain why that matters - just go read it, because all I'd do here is repeat what he wrote :)