読者です 読者をやめる 読者になる 読者になる

メソッドと関数の違い。

今大学でJava演習のサポート(採点やアドバイス)をしている。前書いたプログラム見た人、石投げないで><
基礎の基礎なのでプログラミング的には大丈夫。
ただ講義の説明がお粗末ならしくみな用語や正しい使い方が分かってない様子。
(たとえばコンストラクタはどれでいつ読みだされるか とかが分からない)

その中で「メソッド」のことを「関数」と呼ぶ人が数人いる。
受けているのは2年生で一年時はC言語を学ぶので

まあしょうがないかなー

という気持ちと

俺「メソッドで言うんですよ」
学生「どう違うんですか?」
俺「。。。まあ基本的には同じと考えていいんだけどね」

という悲しい対応しかできないのは悲しいのでちゃんと調べておく。

関数とは

引数と呼ばれるデータを受け取り、定められた通りの処理を実行して結果を返す一連の命令群。多くのプログラミング言語では、関数がプログラムを構成する要素となっている。

(中略)

言語によっては引数を取らない関数や結果を返さない関数を作成できるものもあるが、通常はそうしたものは関数とは呼ばないことが多い。

関数とは【function】 - 意味/解説/説明/定義 : IT用語辞典

んーこれならメソッドも同じだ。引数を受け取って、ある処理をして、結果をリターン。
最後の部分がよく分らないのだけれど、ということは

#include<stdio.h>
void main(){
test();
}
void test(){
printf("test of function");
}

のテストは関数じゃない?

謎は深まるばかり。

メソッドとは

オブジェクト指向プログラミングにおいて、各オブジェクトが持っている自身に対する操作。オブジェクトは「データ」と「手続き」から成っているが、その「手続き」の部分に当たる。プログラミング言語によっては「メンバ関数」と呼ばれることもある。

メソッドとは【method】 - 意味/解説/説明/定義 : IT用語辞典

つまりオブジェクトに対する操作、手続きのことをメソッドと呼ぶのか。

ということは

オブジェクトに対する操作の場合はメソッドと呼ぶよ。ってこと?

もう少し詳しく

1の方が仰るように、Javaには関数という概念が存在しません。僕も詳しくは知らないですし、あまり正確性も保証できないのですが、PHPを学んだとき、「メソッド」は、クラスのメンバであるものを指しており、「関数」はそうでないものを指すと書いてあったような気がします。

関数とメソッドって違うものですか?(JAVA) | JavaのQ&A【OKWave】

へえ。そうだっけ?あ、PHPではオブジェクト指向も出来るからそこでの使い分けでメソッドと関数を使ってるのか!
これで使い分けが分かりそう。
ということでPHPのメソッドと関数について

PHPのメソッドについて

メソッドとは、機能を実現するための関数にあたります。この場合、メソッドは一般の関数とは異なり、あくまでクラスのオブジェクトの中でのみ有効になります。

http://www.scollabo.com/banban/php/php_11.html
PHPの関数について

関数とはあるまとまった処理を行い戻り値を返すものです。

関数 初心者用PHP入門

うーんやっぱり メソッド⊂関数 か。 

まとめ

  1. オブジェクト自身を操作する場合に使うもの、手続きをメソッド。 
  2. それ以外を関数(非オブジェクト指向言語

と呼ぶ。。のか?C++のメンバー関数とかはわからないので割愛。
結局学生にはオブジェクト指向の時はメソッドっていうんだよー
としか言えないな。

<?

class Test {
     function testMethod() {
      echo "It is in Method!\n";
   }                 
} 

function testFunction(){
    echo "It is in Function!\n";
}

testFunction();
$t = new Test();
$t->testMethod();

?>

でとりあえずファイナルアンサー。