クラスとインスタンスは対の概念である。クラスから作られるものがインスタンスで、インスタンスは、自分の作ったクラスを知っている。インスタンスがどの様なメッセージにどう答えるかはクラスが決める。
インスタンス変数とは、オブジェクト指向のプログラミングにおいて、クラス内のインスタンスで動的に生成される変数のことである。そのクラスの属性を表すのに使うことが多い。例として、口座というクラスを作る時、このクラスの中に「口座番号」や「残金」という情報がなければならない。こうした情報は、個々のインスタンスが内部に「属性」として持っているものである。
クラス変数は一種の共有変数で、「クラス」と「インスタンス」の両方から、参照、書き込みできるという性質を持っている。クラス変数は、大文字で始める決まりになっている。
クラス変数は、かなり有効範囲が広い変数である。クラス、およびクラスインスタンスだけでなく、同じ継承木のサブクラス、およびサブクラスのインスタンスからも自由にアクセス出来る[4]。
Smalltalk におけるメソッド (method、手順、方法)は、オブジェクトの振る舞いと行動を決定する手続きであり、他の言語における関数定義に相当する。メッセージがオブジェクトに送られるとメソッドが評価され、結果としてオブジェクトが一つ返される。
インスタンスメソッドがインスタンス変数に送られたメッセージを処理するのに対してクラスメソッドはクラスオブジェクトに対して送られたメッセージを処理する。主な機能としてはインスタンスを生成するときにインスタンス変数の初期化を行うなどがある。