メソッド (計算機科学)
lang.Classクラスをサポートする。java.lang.Object.getClass()メソッドによりClass型オブジェクトを取得できる。また、クラス名.classという構文でClass型オブジェクトを取得することもできる。さらにリフレクションを使うことで、Class型オブジェクトからメソッドを呼び出したり、フィールドにアクセスしたりすることもできる。
.NET FrameworkではメタクラスとしてSystem.Typeクラスをサポートする。System.Object.GetType()メソッドによりType型オブジェクトを取得できる。C#ではtypeof演算子により型シンボルからType型オブジェクトを取得することもできる。また、リフレクションもサポートしている。
C++はクラス型オブジェクトやリフレクションをサポートせず、クラス自体を何らかの変数に代入するようなことはできない。
インスタンスメソッド (instance method) とはインスタンスに属するメソッドのことであり、インスタンスに対しメッセージを送信する事で実行される。インスタンス変数の操作に使われ、インスタンスメソッドはオブジェクト指向プログラミングの中核をなし、もっともよく使われる。
一方、クラスメソッド (class method) とはクラスに属するメソッドのことであり、クラスに対しメッセージを送信する事で実行される。クラス変数の操作やオブジェクトの生成などに使われる。多くのオブジェクト指向言語はメタクラスをサポートしており、クラスオブジェクトの操作手段となる。C++やJavaといったオブジェクト指向言語では静的メンバー関数あるいは静的メソッド (static method) とよばれ、その振る舞いはクラス変数の操作が許可される点を除き非オブジェクト指向言語における関数やプロシージャと変わらない。
引数の数、型、順序などが異なる同じ名前のメソッドを定義することをメソッドの多重定義といい、多くのオブジェクト指向言語ではメソッドやコンストラクタを多重定義できる機能を持つ。オーバーロード (overload) とも呼ばれるが、オーバーライドとの混同に注意が必要である。
ただし、PHPやPerlのように、プログラミング言語によっては、型の曖昧さが原因によりメソッドを多重定義できないものもある。この場合はメソッドの引数をメソッド先頭で読み取り、引数の型を判定する条件分岐で対応する。