【いんたーふぇーす】
インターフェース とは?
💡 クラスへの「守るべき約束書」
📌 このページのポイント
インターフェースって何?抽象クラスと何が違うの?
コンセントの形を思い浮かべてみて。「2穴のコンセント」という規格(インターフェース)があれば、どのメーカーのプラグでも刺さるよね。インターフェースはそれと同じで、「このメソッドを必ず実装してね」というルールだけを決めるものなんだよ。
なんでインターフェースを使うの?直接クラスを作ればいいんじゃないの?
例えば「支払い処理」を考えてみよう。クレジットカード、PayPay、銀行振込とか色々な方法があるよね。それぞれ別のクラスを作って、全部に「pay()メソッドがある」とインターフェースで約束しておけば、使う側は「pay()を呼ぶだけ」で済むんだ。支払い方法を後から追加しても使う側のコードを変えなくていいよ。
実装クラスってインターフェースを複数持てるの?
持てるよ!これがインターフェースの強みの一つで、「飛べる」「泳げる」みたいな複数の能力を組み合わせられるんだ。多くの言語で継承は1つのクラスからしかできないけど、インターフェースは複数実装できるんだよ。
おもしろい!抽象クラスとインターフェースはどう使い分けるの?
抽象クラスは「共通の処理(実装)も持てる」、インターフェースは「ルールだけを定める」という違いがあるよ。最近はJavaなどで「デフォルトメソッド」という機能が増えてインターフェースにも実装を書けるようになったんだ。そのせいで「どっちを使えばいいの?」と混乱するケースが増えていて、ベテランでも判断に迷うポイントになっているよ。
インターフェースって名前に「I」をつけるのが正しいの?
まとめ:ざっくりこれだけ覚えればOK!
「インターフェース」って出てきたら「クラスが守るべきメソッドの約束リストだな」と思えればだいたいOK!
📖 おまけ:英語の意味
「interface」 = 接点・境界面
💬 inter(間)+face(面)。UIのinterfaceと同じ言葉だが、プログラミングでは「クラス同士の接続ルールを定める設計図」という意味で使われるよ