Java入門⑮ メソッド ── 処理に名前をつけて、まとめる

前回まで、データのまとまり(配列・ArrayList・Map)をやってきました。

今回からは、こんどは処理をまとめる話です。その第一歩、メソッドです。

メソッドとは、いくつかの処理をひとまとめにして、名前をつけたものです。

なぜ、処理をまとめるのか

プログラムを書いていると、同じような処理を、何度も書くことがあります。

たとえば「あいさつを表示する」3行の処理を、プログラムの3か所で使いたいとします。すると、同じ3行を3回コピーすることに。内容を変えたくなったら、3か所すべてを直す必要があります。面倒だし、直し忘れも起きます。

そこで、この処理に名前をつけてまとめます。それがメソッドです。料理でいうなら、「野菜を洗って、皮をむいて、切る」に「下ごしらえ」と名前をつけるようなもの。「下ごしらえして」の一言で済みますよね。

書き方を見てみる

あいさつを、メソッドにまとめます。

public class Main {
    public static void main(String[] args) {
        greet();   // 呼び出す
    }

    static void greet() {   // メソッドの定義
        System.out.println("ようこそ");
        System.out.println("当店をご利用ありがとうございます");
    }
}

greet() という名前の処理ができました。形を見てみましょう。

  • static … 今は「おまじない」でOK(後の回で触れます)
  • void … このメソッドは「結果を返さない」という印(次回くわしく)
  • greet … メソッドにつけた名前
  • () … カッコ(中身は次回)
  • { } … この中に、まとめたい処理を書く

そして、main の中の greet(); で、このメソッドを呼び出しています。

「作る」と「呼ぶ」は別

メソッドは、作っただけでは動きません。名前を呼んで(呼び出して)使います。

greet();   // あいさつが表示される

3か所で使いたいなら、3回呼べばいい。greet() と書くだけ。3行をコピーする必要はありません。そして、あいさつ内容を変えたくなったら、メソッドの中身を1か所直すだけで、呼んでいる全部に反映されます。

メソッドの、もうひとつの利点

メソッドは、「くり返しを減らす」だけが目的ではありません。プログラムを読みやすくするのも、大きな役割です。

greet();
showMenu();
takeOrder();

中身が分からなくても、「あいさつして、メニューを見せて、注文を取る」という流れが一目で分かります。処理に名前がついていると、プログラムが「読める文章」のようになるんです。これは、コードが長くなるほど効いてきます。

(Javaのメソッド名は、greetshowMenu のように、小文字で始めるのが慣習です。2語目から大文字にする「キャメルケース」という書き方をよく使います。)

つまずきポイント

学生がつまずくのが、作っただけで、呼び出すのを忘れることです。

static void greet() {
    System.out.println("ようこそ");
}
// greet() を呼んでいない! → 何も表示されない

メソッドは、「作る」と「呼ぶ」は別です。作っただけでは、中身は実行されません。レシピを書いただけでは料理ができないのと同じで、「下ごしらえして」と実際に呼ばないと動かないのです。

「何も表示されないな?」と思ったら、「呼び出し、書いたかな?」と確認してみてください。

まとめ

メソッドは、処理に名前をつけてまとめたもの。

static void greet() {        // 作る
    System.out.println("ようこそ");
}

greet();                     // 呼び出す
  • 同じ処理のくり返しを減らせる
  • 名前をつけることで、プログラムが読みやすくなる
  • 「作る」と「呼ぶ」は別。呼び出しを忘れずに
  • メソッド名は小文字で始める(慣習)

次回は、メソッドに情報を渡したり、結果を受け取ったりする 引数と戻り値 です。