カテゴリ: JavaSilver試験対策 更新日: 2026/05/09

Javaのメソッド呼び出しとシグニチャを徹底解説!初心者でもわかる基本ルール

037
Javaのメソッド呼び出しとシグニチャ

先生と生徒の会話形式で理解しよう

生徒

「Javaでメソッドを呼び出すときに、エラーになることがあるんですけど、どうすればいいんですか?」

先生

「それは、呼び出し先のメソッドのシグニチャが合っていない場合が考えられます。メソッドの仕組みと注意点を詳しく見ていきましょう!」

1. メソッド呼び出しの基本

1. メソッド呼び出しの基本
1. メソッド呼び出しの基本

Javaでは、メソッドを呼び出す際に「名前」と「引数のリスト(シグニチャ)」を一致させる必要があります。メソッド名(引数1, 引数2, ...)の形式で記述し、定義されたメソッドと一致するものがない場合、コンパイルエラーになります。

以下のコードで基本を確認しましょう:


public class Calculator {
    public int add(int a, int b) {
        return a + b;
    }
}

public class Main {
    public static void main(String[] args) {
        Calculator calc = new Calculator();
        int result = calc.add(5, 10); // 正しい呼び出し
        System.out.println("Result: " + result);
    }
}

実行結果:


Result: 15

このコードでは、addメソッドは引数として2つのint型の値を受け取ると定義されています。calc.add(5, 10)は正しいシグニチャで呼び出されているため、正常に動作します。

2. シグニチャとは?

2. シグニチャとは?
2. シグニチャとは?

シグニチャは、メソッド名と引数リストの組み合わせのことを指します。同じ名前のメソッドが複数存在する場合でも、シグニチャが異なれば別のメソッドとして扱われます。この機能を「オーバーロード」と呼びます。

次の例を見てみましょう:


public class OverloadExample {
    public int add(int a, int b) {
        return a + b;
    }

    public double add(double a, double b) {
        return a + b;
    }

    public static void main(String[] args) {
        OverloadExample example = new OverloadExample();
        System.out.println(example.add(5, 10)); // int型のaddメソッドを呼び出す
        System.out.println(example.add(5.5, 10.5)); // double型のaddメソッドを呼び出す
    }
}

実行結果:


15
16.0

この例では、addメソッドが異なる引数型で定義されています。呼び出し時に渡す引数の型に応じて、適切なメソッドが選ばれます。

3. エラーになるケース

3. エラーになるケース
3. エラーになるケース

メソッド呼び出しでエラーが発生するのは、次のような場合です:

  • 指定したメソッドが存在しない。
  • 引数の数や型が定義と一致しない。
  • アクセス修飾子の制限により、メソッドが使用できない。

以下のコードはエラーの例です:


public class Sample {
    public int multiply(int a, int b) {
        return a * b;
    }
}

public class Main {
    public static void main(String[] args) {
        Sample sample = new Sample();
        System.out.println(sample.multiply(10)); // コンパイルエラー: 引数が1つしかない
    }
}

この場合、multiplyメソッドは2つの引数を受け取るように定義されていますが、呼び出し側で1つの引数しか渡していないため、コンパイルエラーが発生します。

Javaをこれから始める人や、 オブジェクト指向の考え方を基礎から理解したい人には、 定番の入門書がこちらです。

スッキリわかるJava入門 第4版をAmazonで見る

※ Amazon広告リンク

4. 試験対策:メソッド呼び出しの確認ポイント

4. 試験対策:メソッド呼び出しの確認ポイント
4. 試験対策:メソッド呼び出しの確認ポイント

メソッド呼び出しに関連する試験問題を解く際には、以下の点に注意してください:

  • シグニチャが正しいか確認する:メソッド名と引数リストが一致しているかを確認。
  • インスタンスが必要か確認する:インスタンスメソッドの場合は、newを使ってインスタンスを生成。
  • アクセス修飾子に注意:対象のメソッドが利用可能な範囲にあるか確認。

次のコードで復習しましょう:


public class Validator {
    public boolean isValid(String input) {
        return input != null && !input.isEmpty();
    }
}

public class Main {
    public static void main(String[] args) {
        Validator validator = new Validator();
        System.out.println(validator.isValid("Java")); // 正しい呼び出し
        // System.out.println(validator.isValid()); // コンパイルエラー: 引数が不足
    }
}

このコードでは、引数を正しく指定している場合にのみ正常に動作します。試験問題でもシグニチャの確認を徹底しましょう。

5. メソッドのシグニチャに含まれないもの

5. メソッドのシグニチャに含まれないもの
5. メソッドのシグニチャに含まれないもの

「シグニチャ」について学習する際、初心者が最も間違いやすいポイントが、戻り値の型はシグニチャに含まれないというルールです。Javaがどのメソッドを呼び出すか判断する基準は、あくまで「名前」と「引数の並び」だけです。

例えば、次のような2つのメソッドを同じクラス内に定義することはできません。


public class SignatureError {
    // 引数の構成が同じで、戻り値だけが違う場合は定義不可
    public int calculate(int x) { return x * 2; }
    // public double calculate(int x) { return x * 2.0; } // コンパイルエラー!
}

もし戻り値だけで区別できてしまうと、calculate(10); とだけ書かれたときに、Javaはどちらのメソッドを実行して良いか分からなくなってしまいます。アクセス修飾子(publicやprivateなど)も同様にシグニチャには含まれません。

6. 引数の型による暗黙の型変換(プロモーション)

6. 引数の型による暗黙の型変換(プロモーション)
6. 引数の型による暗黙の型変換(プロモーション)

メソッドを呼び出す際、引数の型が完全に一致していなくても、より大きな型へ自動的に変換できる場合はエラーにならずに呼び出せることがあります。これを数値のプロモーション(格上げ)と呼びます。


public class PromotionExample {
    public void printNumber(double n) {
        System.out.println("値は: " + n);
    }

    public static void main(String[] args) {
        PromotionExample ex = new PromotionExample();
        int myInt = 100;
        ex.printNumber(myInt); // intからdoubleへ自動変換して呼び出せる
    }
}

値は: 100.0

このように、intdouble を受け取るメソッドに渡すことは可能ですが、逆(doubleint のメソッドに渡す)はデータの欠落が発生するため、明示的なキャストがない限りコンパイルエラーになります。

7. staticメソッドとインスタンスメソッドの呼び出し分け

7. staticメソッドとインスタンスメソッドの呼び出し分け
7. staticメソッドとインスタンスメソッドの呼び出し分け

メソッド呼び出しのルールには、もう一つ重要な「static(静的)」かどうかの区別があります。これによって、呼び出し時の書き方が大きく変わります。

  • インスタンスメソッド: new でオブジェクトを作ってから、変数名を使って呼び出す。
  • staticメソッド: オブジェクトを作らずに、クラス名.メソッド名() で直接呼び出す。

public class Tools {
    public static void sayHello() {
        System.out.println("Hello!");
    }
}

public class Main {
    public static void main(String[] args) {
        // staticメソッドは new しなくても呼び出せる
        Tools.sayHello(); 
    }
}

もし static が付いていないメソッドを Tools.method() のように呼び出そうとすると、コンパイルエラーになります。呼び出したいメソッドの定義をしっかり見て、どちらの形式が必要か判断する習慣をつけましょう。

まとめ

まとめ
まとめ

Javaにおけるメソッド呼び出しの基本ルールとエラーになりやすいポイントについて学びました。メソッドは、名前だけでなくシグニチャ(引数の数や型)によって区別されます。特に、引数が不足していたり型が一致しない場合にはコンパイルエラーが発生するため、事前に正しいシグニチャを確認することが重要です。また、オーバーロードを活用することで、同じ名前でも異なる引数リストを持つメソッドを実装できることも確認しました。

以下のコードで復習しましょう:


public class Example {
    public int multiply(int a, int b) {
        return a * b;
    }

    public double multiply(double a, double b) {
        return a * b;
    }

    public static void main(String[] args) {
        Example example = new Example();
        System.out.println(example.multiply(5, 10)); // 正しい呼び出し: int型
        System.out.println(example.multiply(5.5, 10.5)); // 正しい呼び出し: double型
        // System.out.println(example.multiply(5)); // コンパイルエラー: 引数不足
    }
}

上記のコードでは、正しいシグニチャで呼び出す場合には正常に動作しますが、引数不足や型の不一致がある場合にはエラーになります。このように、シグニチャの確認を徹底することで、エラーを回避しやすくなります。

先生と生徒の振り返り会話

生徒

「シグニチャの確認が重要だと分かりましたが、オーバーロードを使う場合に注意すべき点は何ですか?」

先生

「オーバーロードを使う場合、引数の型や順序を明確にしておくことが大切です。また、同じ型の引数が複数あると曖昧さが生じることがあるので、場合によっては明示的なキャストを使うと安全です。」

生徒

「なるほど!これからはメソッドを定義するときにシグニチャを意識するようにします!」

この記事を読んだ人からの質問

この記事を読んだ人からの質問
この記事を読んだ人からの質問

プログラミング初心者からのよくある疑問/質問を解決します

Javaのメソッド呼び出しでエラーになる原因は何ですか?

Javaのメソッド呼び出しでエラーが出る原因の多くは、メソッドのシグニチャが一致していないことです。メソッド名、引数の数、引数の型が正しく一致しているか確認する必要があります。

Javaのメソッドシグニチャとは何を指しますか?初心者向けに説明してください。

Javaのメソッドシグニチャとは、メソッド名と引数リスト(引数の型や数)の組み合わせのことです。戻り値の型はシグニチャに含まれません。呼び出しの際にはこのシグニチャが一致している必要があります。
JavaSilver試験対策の一覧へ
新着記事
Python
NumPyのdtypeとは?データ型の意味と仕組みを初心者向けに解説
NumPyのdtypeとは?データ型の意味と仕組みを初心者向けに徹底解説
Dart
Dartのクラスの作り方!定義・インスタンス生成の基礎
Dartのクラスの作り方を完全解説!初心者でも理解できるクラス定義とインスタンス生成の基礎
Java
Javaの同一性と同値性
Javaの同一性と同値性をわかりやすく解説!初心者向けの基礎知識
AWS
【AWS】s3 lsコマンドの使い方まとめ【オプション・ワイルドカード・日付指定】
【AWS】s3 lsコマンドの使い方まとめ【オプション・ワイルドカード・日付指定】
人気記事
Java
Java の Random クラスを使ってランダムな数値を生成する方法
JavaのRandomクラスの使い方を完全ガイド!初心者でもわかる乱数生成
Java
Java の getter メソッドと setter メソッドの使い方
Javaのgetterメソッドとsetterメソッドの使い方を完全ガイド!初心者でもわかるアクセス方法
AWS
【AWS】RDSの料金体系まとめ!ざっくり理解・高いと感じる理由も解説
【AWS】RDSの料金体系まとめ!ざっくり理解・高いと感じる理由も解説
AWS
【AWS】S3の料金体系まとめ!無料枠・課金ポイント・見積もり方法まで
【AWS】S3の料金体系まとめ!無料枠・課金ポイント・見積もり方法まで

🔌 USBポート不足を解消

Type-C 1本で拡張。
開発・作業環境を一気に快適に

UGREEN USB-Cハブを見る

※ Amazon広告リンク