メソッドの柔軟性を高める!クラス型・インターフェイス型パラメーターの威力とは?

こんにちは。ゆうせいです。

今回は「メソッドのパラメーターをクラスやインターフェイス型にすることで柔軟性が増す」というテーマについて解説します。初学者の方が混乱しがちな「オブジェクト型の引数」の概念を、たっぷりの例えと図解でスッキリ理解していきましょう!


パラメーターは料理の材料みたいなもの

なぜメソッドにパラメーターがあるのか?

パラメーター(引数)は、メソッドに与える材料です。例えば、カレーを作るメソッドがあったとしましょう。

public void makeCurry(String ingredient) {
    System.out.println(ingredient + "入りカレーを作ります!");
}

このメソッドに「じゃがいも」や「にんじん」を渡せば、それぞれの材料に応じたカレーができます。材料を変えることで、処理を使い回せる=柔軟性が高いというわけです。


クラス型パラメーターで「情報のかたまり」を受け取る

単純な値ではなく「まとまったデータ」を扱う

たとえば、名前や年齢など複数の情報を持った「人」を渡したい場合、次のようにクラスを作ります。

public class Person {
    String name;
    int age;
    
    public Person(String name, int age) {
        this.name = name;
        this.age = age;
    }
}

これを使って:

public void greet(Person p) {
    System.out.println("こんにちは、" + p.name + "さん(" + p.age + "歳)");
}

このように、クラス型を使うことで、情報のまとまり(オブジェクト)を一気に渡せるようになります。


インターフェイス型パラメーターで「振る舞いの自由度」を上げる

インターフェイスは「役割の契約書」

インターフェイスとは、「このメソッドを持っているならOK!」という共通ルールのことです。

たとえば「挨拶できる人」という役割を表すインターフェイスを定義してみましょう。

public interface Greetable {
    void greet();
}

このインターフェイスを実装するクラス:

public class JapanesePerson implements Greetable {
    public void greet() {
        System.out.println("こんにちは!");
    }
}

public class EnglishPerson implements Greetable {
    public void greet() {
        System.out.println("Hello!");
    }
}

インターフェイス型をパラメーターにすると?

public void greetSomeone(Greetable g) {
    g.greet(); // 実装に応じて異なる挨拶がされる
}

このように、「何をするか」は呼び出される側に任せられるので、メソッドの側では具体的なクラスを気にせず使えます。これが「柔軟性」です!


クラス型とインターフェイス型の違いと使い分け

特徴クラス型パラメーターインターフェイス型パラメーター
目的データの受け渡し動作(メソッド)の抽象化
Person personRunnable r
利点情報のまとまりを表現処理の中身を差し替えられる
使用例コントローラー、DTO戦略パターン、コールバック

たとえ話で理解しよう!

  • クラス型のパラメーターは、「履歴書(名前・年齢・住所などの情報の束)」を渡すイメージ。
  • インターフェイス型のパラメーターは、「お仕事の契約書(この仕事ができますという約束)」を渡すイメージ。

まとめと今後の学習のヒント

メソッドの柔軟性を高めるには、「何を渡すか」がとても大事です。

単なる値だけでなく、オブジェクト(クラス型)や動作の契約(インターフェイス型)を渡せるようになると、より再利用性・拡張性の高いコードが書けるようになります。

今後の学習では、以下の点を深掘りしてみましょう!

  • 抽象クラス vs インターフェイスの違い
  • 戦略パターン(Strategy Pattern)におけるインターフェイスの役割
  • ラムダ式と関数型インターフェイス(Java 8以降)

さらに理解を深めたい方には、デザインパターンの学習もおすすめです!

セイ・コンサルティング・グループの新人エンジニア研修のメニューへのリンク

投稿者プロフィール

山崎講師
山崎講師代表取締役
セイ・コンサルティング・グループ株式会社代表取締役。
岐阜県出身。
2000年創業、2004年会社設立。
IT企業向け人材育成研修歴業界歴20年以上。
すべての無駄を省いた費用対効果の高い「筋肉質」な研修を提供します!
この記事に間違い等ありましたらぜひお知らせください。