メソッドの柔軟性を高める!クラス型・インターフェイス型パラメーターの威力とは?
こんにちは。ゆうせいです。
今回は「メソッドのパラメーターをクラスやインターフェイス型にすることで柔軟性が増す」というテーマについて解説します。初学者の方が混乱しがちな「オブジェクト型の引数」の概念を、たっぷりの例えと図解でスッキリ理解していきましょう!
パラメーターは料理の材料みたいなもの
なぜメソッドにパラメーターがあるのか?
パラメーター(引数)は、メソッドに与える材料です。例えば、カレーを作るメソッドがあったとしましょう。
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 person | Runnable r |
利点 | 情報のまとまりを表現 | 処理の中身を差し替えられる |
使用例 | コントローラー、DTO | 戦略パターン、コールバック |
たとえ話で理解しよう!
- クラス型のパラメーターは、「履歴書(名前・年齢・住所などの情報の束)」を渡すイメージ。
- インターフェイス型のパラメーターは、「お仕事の契約書(この仕事ができますという約束)」を渡すイメージ。
まとめと今後の学習のヒント
メソッドの柔軟性を高めるには、「何を渡すか」がとても大事です。
単なる値だけでなく、オブジェクト(クラス型)や動作の契約(インターフェイス型)を渡せるようになると、より再利用性・拡張性の高いコードが書けるようになります。
今後の学習では、以下の点を深掘りしてみましょう!
- 抽象クラス vs インターフェイスの違い
- 戦略パターン(Strategy Pattern)におけるインターフェイスの役割
- ラムダ式と関数型インターフェイス(Java 8以降)
さらに理解を深めたい方には、デザインパターンの学習もおすすめです!
セイ・コンサルティング・グループの新人エンジニア研修のメニューへのリンク
投稿者プロフィール

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