3分でわかる抽象クラスとインターフェースの違い!定義や使い分けも現役エンジニアがわかりやすく解説
また似たような言葉で「インターフェース」というものもあり、両者の違いを初心者が理解するのはなかなか難しい。
今回は「抽象クラス」と「インターフェース」の違いについて、現役エンジニアのおおつけと一緒に解説していきます。
ライター/おおつけ
現役システムエンジニア兼ライター。前職は貿易商社の営業マン。知らない言葉は徹底的に調べるクセがあり、独自の単語帳を作っている。日々たくわえた広い知識を、わかりやすく紹介していく。
抽象クラスとインターフェースの定義
image by iStockphoto
いわゆるオブジェクト指向のプログラミング言語において登場する言葉「抽象クラス」と「インターフェース」。参考書やネットの記事を読んだだけでは理解できないというプログラミング学習者の方も多いのではないでしょうか。ここではまず「抽象クラス」と「インターフェース」それぞれの定義について見ていきましょう。
抽象クラス:具体的な処理を記載しないクラス
「抽象クラス」とは具体的な処理を記載しないクラスです。機能を実装する際に使っているクラスの上位クラスにあたります。
たとえば皆さんが「イヌ」というクラスを実装するにあたって、その上位の概念を抽象クラス「動物」に定義したとしましょう。すべての「動物」は代謝機能を持ちますが、その代謝機能の内容は各「動物」ごとに異なっています。つまり「動物は代謝機能を持つ」と言う漠然とした定義を行い、具体的な処理までを記載しないのが「抽象クラス」です。
インターフェース:具体的な処理を記載しないメソッドと変数
「インターフェース」とは具体的な処理を記載しない、メソッドと変数のみの特別なクラスです。目的は処理の形式を共通化すること。
たとえばとある社内システムの「インターフェース」が「利益計算処理(メソッド)」と「売上(変数)」と「原価(変数)」を定義していたとします。こうすることで「利益計算処理を実装するときは売上と原価を使用する」ことがルールとして適用できるのです。
抽象クラスとインターフェースの違い
image by iStockphoto
「抽象クラス」と「インターフェース」それぞれの定義を知ったところで、本題である両者の違いに迫っていきましょう。一見似たような定義ですが、そこには大きな役割の違いがあるのです。
\次のページで「抽象クラス:抽象的な「概念」を定義する」を解説!/