初期化に利用されるメソッドをコンストラクタあるいは構築子 (constructor)、廃棄時に利用されるメソッドをデストラクタと呼んで特別に扱うことが多い。コンストラクタが初期化だけを担う場合はイニシャライザあるいは初期化子 (initializer) と呼ばれることもある。Javaはオブジェクトの寿命管理にガベージコレクションを用いるため、デストラクタをサポートしない。ただし、オブジェクトがガベージコレクションによって破棄されるときに呼び出されるファイナライザ (finalizer) をサポートし、Object#finalize()メソッドがその役割を果たす。ただし、ファイナライザはC++のデストラクタと違ってユーザーコードで明示的に呼び出すことはできない。ファイナライザが呼び出されるタイミングをプログラマが制御することはできず、最終防壁（フェイルセーフ）としての役割しか持たないため、Javaにおけるファイナライザは本当に必要でない限り使用するべきではない。C#もファイナライザをサポートする（構文はC++のデストラクタに似ており、かつてはデストラクタと呼ばれていたが、役割はJavaのファイナライザと同じである）。データ型の理論においては保持されるデータが必ずその型で認められる正しい値の範囲に収まることを保証するため、生成されるオブジェクトのデータ・メンバが必ず適切なコンストラクタによって初期化されるように求める。またオブジェクトが入出力機器やファイルや通信、プロセスやスレッド、ウィンドウとウィジェットなどハードウェアやオペレーティングシステム (OS) が提供する資源を管理するために利用される場合に、コンストラクタやデストラクタでそれらの資源の使用開始（オープン処理）や使用終了（クローズ処理）をそれぞれ管理し、通常のメソッドでそれらにまつわる各種サービスを提供するようにすることで、それらのリソースがあたかもプログラム中のオブジェクトであるかのように自然に取り扱うことができるようになる（RAII）。C++やJavaなどでは、コンストラクタはクラスと同じ名前を持ち、戻り値を持たないメソッドとして定義される。C++では一部のコンストラクタは型変換演算子として、また暗黙の型変換にも利用される。
クラス・メソッドだが、オブジェクト指向の本義に立ち返れば、クラス・メソッドがあるということはクラスがメッセージをレシーブできるという事になる。クラスがメソッドを持つことは便利だが、クラスをオブジェクトとすると実行効率に劣るため、双方の利点を享受できるこのような折中的仕様を取る言語は多い。C++ではクラスはオブジェクトでは無いが、一方でクラスに属するメソッドは存在する。Eiffelではクラスはオブジェクトでは無いためクラスのメソッドであるクラス・メソッドは存在しない。Smalltalkではクラスもオブジェクトの一種であるため当然クラスはメソッドをもつ。各言語におけるクラスメソッドの呼称クラス・メソッドは、C++では静的メンバ関数 (static member function) と呼ばれる。これはクラスがオブジェクトでない言語にとってはクラス・メソッドより正確な表現であり適切である。（"static" とはCのstatic変数に由来しauto変数の対語である。関数コールによりスタック上に生成される関数インスタンスに依存しない変数と、インスタンス生成有無にかかわらず実行できる関数の類似による。）Javaではクラス・メソッドは静的メソッド (static method) とも呼ばれることもある。
メソッド (method) は特定の種類のメッセージの処理方法を記述したものである。メソッドもインスタンス・メソッドとクラス・メソッドの2種にできる。インスタンス・メソッドはそのクラスの各インスタンスオブジェクトを操作し、クラス・メソッドはクラスオブジェクトを操作する。メソッドとの集まりはそのクラスのオブジェクトが処理可能なメッセージのカタログの機能を果たす。一例として、C++では、メソッドはメンバ関数 (member function) や関数メンバ (function member) と呼ばれる。これはC++がグローバル関数との区別をつけることと、クラスを抽象データ型の拡張と位置づけ、非メッセージメタファな言語思想を持っているためである。これら言語ではメソッドをオブジェクト（=クラスやインスタンス）の持ち物として捉えず、クラスに定義された機能要素であると考える。メッセージメタファを否定するため、同時にメッセージを実行するメソッド（手法）ではありえない。
クラスデータメンバはそのクラスオブジェクトとインスタンスオブジェクトの間で共有されるデータである。Smalltalkではクラスデータメンバはクラス変数 (class variable) と呼ばれる。また、C++・Javaでは歴史的事情によりクラスデータメンバは静的データメンバ (static data member)、静的変数 (static variable)、静的フィールド (static field) と呼ばれる。ただし、Smalltalkのクラス変数はC++やJavaのクラス変数とは異なる。Smalltalkにおいて、C++やJavaのクラス変数と同等となる変数はプール辞書 (pool dictionary) と呼ばれる。
インスタンスデータメンバ（一般に単にデータメンバと言われる場合はこちら）はそのクラスのインスタンス各々に保持される。インスタンスデータメンバの集まりはそのクラスのインスタンスが保持するデータの形式を定める。インスタンスデータメンバは単にデータメンバと呼ばれることも多い。Smalltalkではインスタンス変数 (instance variable) と呼ばれる。
「オトク(Otoγ)」は「国土、地域」を意味するソグド語「オーターク(ōtāk)」に由来する単語である。また、明朝では「8オトク・チャハル(Naiman Otoγ Čaqar)」を「察罕児八大営」と訳していたように、「オトク」の事を「営」と呼称していた。1206年、モンゴル帝国を建国したチンギス・カンは配下の遊牧民を全て十進法に基づいて十人隊(アルバン)・百人隊(ジャウン)・千人隊(ミンガン)・万人隊(トゥメン)の軍勢に再編成し、これがモンゴル帝国時代における遊牧集団の基礎単位となった(千人隊制度)。千人隊制度はモンゴル遊牧社会の基盤として長く残存したが、北元時代の度重なる社会混乱の影響によって次第に変容し、トゥメン(万人隊)が肥大化して独立した遊牧部族となり、その下部組織たるミンガン(千人隊)は社会集団としての「オトク」となった。「オトク」という概念がいつ頃から表れたかは諸説あるが、16世紀以後のことと考えられている。エセン・ハーンの頃までは元朝時代の社会制度がいくらか残存していたが、エセン・ハーン没後の混乱の中で元朝由来の社会制度の大部分は崩壊してしまった。ダヤン・ハーンの登場以後、知院、平章といった元朝由来の称号は史料上に登場しなくなり、この頃大きな社会体制の変化があったものと見られる。ダヤン・ハーンはそれまで分裂していたモンゴルの諸部族を再統一し、これを年代記は「ダヤン・ハーンの6トゥメン(万人隊)」と呼称する。しかしこの「6トゥメン」の内、ダヤン・ハーンの死後に解体されてしまったウリヤンハン・ヨンシエブのオトクについて記録が残されていないことから、「オトク」という概念が形成されたのはダヤン・ハーンの死以後のことと推測されている。「オトク」という概念が発展していったのは、ダヤン・ハーンの孫の世代に各トゥメンが独立化していったことと関連があると考えられている。ダヤン・ハーンの息子バルス・ボラトの諸子(メルゲン・ジノン、アルタン・ハーン、クンドゥレン・ハーン)はオルドス、トゥメト、ハラチンといったトゥメンをそれぞれ支配し、名目上の大ハーンたるチャハルのハーンを上回る勢力を有するようになった。中央の大ハーンの統制を離れる中で地縁集団としての「オトク」という概念が発展し、モンゴル社会に広く浸透したものと見られる。17世紀、ダイチン・グルン(清朝)が成立してモンゴルの大部分を支配下に置くと、「オトク」は「ホショー(旗)」に取って代わられていった。これ以後社会集団としての「オトク」という概念は使われなくなったが、現在でもオルドス市オトク旗・オトク前旗などに名称を残している。