Java基礎文法Part４

今回はメソッドについて記事にしたいと思います。

メソッドは、プログラミングの中でよく使われる言葉です。簡単に言うと、**メソッドは「動作」や「行動」**を表すものです。現実世界で例えると、「何かをするための命令」だと思ってください。

メソッドって何？
例えば、人間で考えてみましょう。**人は「歩く」「話す」「食べる」といった色々な行動をしますよね。これをプログラミングの世界で表現すると、「歩く」「話す」「食べる」**という動作が「メソッド」にあたります。

メソッドは、「何をするか？」という行動の部分をプログラムに書いておくことで、必要なときにその行動を呼び出して実行することができます。

メソッドの例
例えば、犬が「吠える」という動作をするためのメソッドを考えてみましょう。

```Java
class Dog {
    // 犬が吠えるメソッド
    void bark() {
        System.out.println("ワンワン！");
    }
}
```
bark()というメソッドを使って、犬が「ワンワン！」と吠える動作を表しています。
System.out.println("ワンワン！");という部分が実際に画面に「ワンワン！」と表示する命令です。
メソッドを呼び出す
メソッドは、「使いたい！」と思ったときに呼び出すことで実行されます。

例えば、さっきの犬の例で、犬に「吠えろ！」と命令すると、以下のようなプログラムになります。

```Java
public class Main {
    public static void main(String[] args) {
        Dog myDog = new Dog();  // 犬を作る
        myDog.bark();           // 犬に「吠える」ように命令する
    }
}
```
これを実行すると、bark()メソッドが呼び出されて、犬が「ワンワン！」と吠えるという動作が実行されます。

メソッドはどうして便利なの？
メソッドがあると、同じ動作を何度も繰り返し使うことができます。1回メソッドを作っておけば、何度でも呼び出して実行できるので、同じコードを何度も書かずに済みます。

例えば、「犬が吠える」という動作をプログラムの中で何度も使いたい場合、以下のように何度でも呼び出すことができます。

```Java
public class Main {
    public static void main(String[] args) {
        Dog myDog = new Dog();  // 犬を作る
        myDog.bark();           // 1回目に吠える
        myDog.bark();           // 2回目に吠える
        myDog.bark();           // 3回目に吠える
    }
}
```
引数（ひきすう）って何？
メソッドには、**引数（ひきすう）**というものがあります。引数とは、メソッドに渡す「情報」のことです。たとえば、「歩く」というメソッドに「何歩歩くか」を伝えるような感じです。

例えば、「犬が何回吠えるか」を決めたいときは、引数を使って「何回吠えるか」をメソッドに伝えることができます。
```Java
class Dog {
    // 犬が指定された回数吠えるメソッド
    void bark(int times) {
        for (int i = 0; i < times; i++) {
            System.out.println("ワンワン！");
        }
    }
}
```
このメソッドでは、timesという引数に「吠える回数」を渡しています。これを使って、何回吠えるかをコントロールできます。

```Java
public class Main {
    public static void main(String[] args) {
        Dog myDog = new Dog();   // 犬を作る
        myDog.bark(3);           // 犬に3回吠えるように命令する
    }
}
```



画像にある内容について説明します。それぞれ、メソッドの種類やメソッドに関する概念を説明しているようですね。中学生にもわかるように、順番に解説していきます。

2. 値を返すメソッド（戻り値）
戻り値とは、メソッドが「仕事を終えたあとに返してくる答え」のことです。メソッドが何か計算や処理をした結果をプログラムに返すことを「戻り値を返す」と言います。

たとえば、足し算をしてその答えを返すメソッドを考えてみましょう。

```java
public class Main {
    // 2つの数字を足して、その結果を返すメソッド
    int add(int a, int b) {
        return a + b;  // 足し算の結果を返す
    }

    public static void main(String[] args) {
        Main main = new Main();
        int result = main.add(5, 3);  // 5 + 3 の結果を取得
        System.out.println(result);   // 8 と表示される
    }
}
```
このメソッドaddは、足し算の結果を**「返している」**ので、戻り値を持つメソッドです。

 戻り値のないメソッド
「戻り値がないメソッド」とは、仕事をしたあとに何も返さないメソッドのことです。動作はするけど、計算結果などは返さない、ただ何かを実行するだけのメソッドです。voidというキーワードを使います。

例えば、画面にメッセージを表示するだけのメソッドがそれにあたります。
```java
public class Main {
    // ただメッセージを表示するだけのメソッド（戻り値はない）
    void printMessage() {
        System.out.println("こんにちは！");
    }

    public static void main(String[] args) {
        Main main = new Main();
        main.printMessage();  // "こんにちは！" と表示される
    }
}
```
このprintMessageメソッドは、何も返さずに画面にメッセージを表示するだけです。**これが「戻り値のないメソッド」です**。

 複数の引数のメソッド
引数とは、メソッドに「渡す情報」のことです。メソッドに対して、どんなデータで動作をさせるかを指定します。引数は1つだけでなく、複数渡すこともできます。

たとえば、2つの数字を足すメソッドでは2つの引数を渡しています。

```java
public class Main {
    // 2つの数字を引数として受け取り、それを足して結果を返すメソッド
    int add(int a, int b) {
        return a + b;
    }

    public static void main(String[] args) {
        Main main = new Main();
        int result = main.add(10, 20);  // 2つの引数を渡す（10と20）
        System.out.println(result);    // 30 と表示される
    }
}
```
ここでは、addメソッドに対して**2つの引数（10と20）**を渡しています。これが「複数の引数を持つメソッド」です。

**オーバーロード**
オーバーロードとは、同じ名前のメソッドを複数作ることができる仕組みです。ただし、引数の数や種類が違うメソッドに限ります。

たとえば、「数字を足すメソッド」があったとしますが、2つの数字を足す場合もあれば、3つの数字を足す場合もあるとき、同じ名前で2つのバージョンを作ることができます。
```java
public class Main {
    // 2つの数字を足すメソッド
    int add(int a, int b) {
        return a + b;
    }

    // 3つの数字を足すメソッド（同じ名前だけど引数が違う）
    int add(int a, int b, int c) {
        return a + b + c;
    }

    public static void main(String[] args) {
        Main main = new Main();
        System.out.println(main.add(5, 3));       // 8（2つの数字）
        System.out.println(main.add(5, 3, 2));    // 10（3つの数字）
    }
}
```
このように、同じ名前のメソッドでも引数の数や型が異なれば、複数作ることができる。この仕組みを「**オーバーロード**」と言います。

今回はメソッドについてまとめてみました。