PR

Java:メソッドの定義と呼び出しのコツを3分で解説

Java

Javaのメソッドは、プログラムを整理し再利用可能なコードブロックを作成するための基本的な構造の1つ。

メソッドを定義することで、特定のタスクを1つの単位としてまとめ、プログラムの他の部分から呼び出して再利用することができるように。結果、コードの読みやすさと保守性が向上し、柔軟で効率的なプログラミングが可能になります。

メソッドを理解し、適切に活用することでより効率的で管理しやすいプログラムを作成することができます。

このページではJavaのメソッドとは何か?基本的な使い方や利用する際の注意点などを初心者向けに1からわかりやすく解説します。

関連 Javaの1stステップ:基本的な構文ルールを1分で復習!

スポンサーリンク

そもそも・・・メソッドとは?

メソッドとはJavaで特定の動作や機能を実行するためのコードのまとまりのこと。似たような概念に「関数」が存在しますが、Javaには「関数」という独立した概念は存在せずすべて「メソッド」として定義されるのが特徴です。

参考 プログラミングの「関数」とは?

参考)他の言語での関数とメソッド

  • 関数(Function)
    • 一般的なプログラミング言語(例えば、PythonJavaScript)では、関数は独立して存在し、特定のタスクを実行する。
  • メソッド(Method)
    • メソッドは、オブジェクト指向プログラミング(OOP)で使われる用語で、特定のクラスに関連付けられた関数です。

ざっくり説明すれば、関数とはそれ単体で存在しそれ単体で実行することができるプログラムの部品のようなイメージ。メソッドはそれ単体で存在するというよりは、クラスの中で定義され、クラスを通して利用するものであるということ。

いずれにせよ、一旦ここではメソッドも「関数」と同じようなものと理解しておけばOK。クラスの中で定義される「関数」がメソッドだ!と覚えておきましょう。

メソッドの定義

ここからは本題のJavaでメソッドを定義するための基本的なルールを説明していきます。

メソッドの構文

メソッドを定義するための基本的な構文は以下の通り。

修飾子 戻り値の型 メソッド名(引数) {
    // メソッドの中の処理
    return 戻り値; // 戻り値がある場合
}
  • 修飾子
    • メソッドのアクセスレベル。例えば、publicはどこからでも呼び出せることを意味。
  • 戻り値の型
    • メソッドが返すデータの型。データを返さない場合はvoidを利用。
  • メソッド名
    • メソッドを識別するための名前で分かりやすく、何をするメソッドかを表す名前にする。
  • 引数
    • メソッドが受け取るデータ。複数の引数がある場合は、カンマで区切る。

#いろいろ書いていますが、サンプルコードを見ていくと難しく感じることはなくなるはず。まずは素直にコードを見ながら勉強していきましょう。

早速、簡単なサンプルをご覧ください。

サンプルコード 2つの整数を加算するメソッド

public int addNumbers(int a, int b) {
    int sum = a + b; // 2つの引数を加算
    return sum; // 合計を返す
}

このコードは、整数(int)を返すaddNumbersというメソッドを定義しています。このメソッドは2つの整数を引数として受け取った後2つの整数を加算し、その結果を返します。

引数というのは、ザックリいえばこのメソッドに与える「インプット」のようなもので、戻り値というのはその「アウトプット」のようなもの。料理の具材を渡したら一品作ってくれるシェフのようなもので、具材にあたるのが引数、出来上がった料理が戻り値です。

Javaメソッドの引数と戻り値
図1:Javaメソッドの引数/戻り値
Q
戻り値が複数になることはある?
A

Javaでは、1つのメソッドが複数の戻り値を直接返すことはできません。が、複数の値を返す方法として、以下の方法があります。

パターン1 オブジェクトを使う方法

複数の値を格納するクラスを作成し、そのクラスのインスタンスを返す。

public class Result {
    int sum;
    int product;

    public Result(int sum, int product) {
        this.sum = sum;
        this.product = product;
    }
}

public Result calculate(int a, int b) {
    int sum = a + b;
    int product = a * b;
    return new Result(sum, product);
}

パターン2 配列を使う方法

配列に複数の値を格納して返す。

public int[] calculate(int a, int b) {
    int[] results = new int[2];
    results[0] = a + b;
    results[1] = a * b;
    return results;
}

戻り値がないメソッド:void

戻り値がないメソッドを定義する場合は、戻り値の型としてvoidを指定します。例えば、戻り値のない「挨拶を表示するメソッド」であれば↓のように定義します。

public void greet(String name) {
    System.out.println("Hello, " + name);
}

このメソッドは、nameという引数を受け取り、「Hello (名前)」を表示するだけで戻り値はありません。そのため戻り値の型には「void」を指定してます。

voidは英語で「空(から)」や「無(なし)」を意味します。

メソッドの呼び出し

定義したメソッドを使うためには、まずそのメソッドが属するクラスのインスタンスを作成し、メソッドを呼び出す、という2つのステップを経る必要があります。

図1:インスタンス化

参考 Javaのクラスの基本(オブジェクト&インスタンス化の基本)

冒頭でもご説明した通りJavaは「関数=それ単体で存在しそれ単体で実行できる」は存在せず、すべてメソッド(クラスの中で定義し、クラスを呼び出すことでメソッドを呼び出す)という概念で統一されるためです。

ステップ1 クラスのインスタンスを作成

クラス名 オブジェクト名 = new クラス名();

ステップ2 メソッドの呼び出し

オブジェクト名.メソッド名(引数);

クラスの中でメソッドを定義し、それを呼び出す具体的な例を見てみましょう。わかりやすい例として、自動車(クラス)に「エンジンをかける」(メソッド)という機能を定義し、それを呼び出す例を考えます。

日常生活でも同じですが、エンジンをかけるためには車そのものが存在しないといけません。これと同じでメソッドを呼び出すには、まず自動車のインスタンス(具体的な車)を作るステップが必要です。

public class Car {
    // メソッドの定義
    public void startEngine() {
        System.out.println("エンジンがかかりました");
    }
}

public class Main {
    public static void main(String[] args) {
        // Carクラスのインスタンスを作成
        Car myCar = new Car();
        // インスタンスを使ってメソッドを呼び出し
        myCar.startEngine();
    }
}

上記のように、CarクラスのstartEngineメソッドを使ってエンジンをかける動作を実行しています。メソッドはクラスに属しているため、クラスのインスタンスを通じて呼び出されていることが分かります。

続けて、より実践的な例として戻り値の有無や数に注目して以下のサンプルコードをご覧ください。

public class Calculator {
    // 戻り値があるメソッドの定義
    public int addNumbers(int a, int b) {
        return a + b;
    }

    // 戻り値がないメソッドの定義
    public void greet(String name) {
        System.out.println("Hello, " + name);
    }

    // 複数の戻り値を返すメソッドの定義
    public Result calculate(int a, int b) {
        int sum = a + b;
        int product = a * b;
        return new Result(sum, product);
    }
}

public class Main {
    public static void main(String[] args) {
        // Calculatorクラスのインスタンスを作成
        Calculator calc = new Calculator();

        // 戻り値があるメソッドの呼び出し
        int result = calc.addNumbers(5, 3);
        System.out.println("Sum: " + result);

        // 戻り値がないメソッドの呼び出し
        calc.greet("Alice");

        // 複数の戻り値を返すメソッドの呼び出し
        Result calcResult = calc.calculate(4, 2);
        System.out.println("Sum: " + calcResult.sum);
        System.out.println("Product: " + calcResult.product);
    }
}

↑の例は、Calculatorクラスに3つのメソッドを定義し、Mainクラスのmainメソッドでそれらを呼び出しています。戻り値があるメソッド、ないメソッド、複数の戻り値を返すメソッドの使い方がわかります。

まとめ Javaメソッドの定義と呼び出し

  • メソッドとは: 特定の動作を実行するコードのまとまり
  • メソッドの定義:
    • 修飾子、戻り値の型、メソッド名、引数リストを指定
  • メソッドの呼び出し: クラスのインスタンスを通じて行う
  • 戻り値:
    • ある場合: 戻り値の型を指定し、return文で返す
    • ない場合: voidを使う
public class Calculator {

    // 戻り値があるメソッドの定義
    public int addNumbers(int a, int b) {
        return a + b;
    }

    // 戻り値がないメソッドの定義
    public void greet(String name) {
        System.out.println("Hello, " + name);
    }

    // 複数の戻り値を返すメソッドの定義
    public int[] calculate(int a, int b) {
        int[] results = new int[2];
        results[0] = a + b; // 合計
        results[1] = a * b; // 積
        return results;
    }

    public static void main(String[] args) {
        // Calculatorクラスのインスタンスを作成
        Calculator calc = new Calculator();

        // 戻り値があるメソッドの呼び出し
        int sum = calc.addNumbers(5, 3);
        System.out.println("Sum: " + sum);

        // 戻り値がないメソッドの呼び出し
        calc.greet("Alice");

        // 複数の戻り値を返すメソッドの呼び出し
        int[] results = calc.calculate(4, 2);
        System.out.println("Sum: " + results[0]);
        System.out.println("Product: " + results[1]);
    }
}

このWebサイトは現役のエンジニアが以下3点を目的として運営しています。

  1. 勉強:一度理解した内容を忘れないように。
    → アウトプットは「最強のインプット」である! 
  2. 備忘:忘れたとしても後から見返せるように。
    → 未来の自分への「お手紙」を書いています。 
  3. 共有:〇〇ってこうだったんだ!の感動をシェアできるように。
    → あなたの知識は誰かにとっての「価値ある情報」です。 

副業ブログの始め方はこちらから

スポンサーリンク
Java
シェアする
ビズドットオンラインをフォローする
タイトルとURLをコピーしました