Javaの勉強をしていると「
抽象クラス」とか「
インターフェイス」という単語をよく目にすると思います。
よく目にするにもかかわらずこの二つの意味、あるいは必要性を理解するのが非常に難しいと思われている方もいらっしゃるのではないでしょうか?
抽象クラス、インターフェイスとはいったい何なのかということを一言で簡単に表すと、クラスの雛形である、と言えます。
クラス内のメソッドの名前は定義しているが、中身は定義されていないのが抽象クラスとインターフェイスなのです。
中身の実装はサブクラスでオーバーライドすることになります。
では、抽象クラス、インターフェイスを使うメリットは何なのか?
この説明は非常に難しいです。
メリットが不明確であるため抽象クラスやインターフェイスが
わかったようでいまいちわからないといった混乱気味な状態になり、いつの間にか苦手意識を持つようになる人が多いようです。
(私もそのひとりでした。
そんな苦手意識がなくなるように、次の記事から抽象クラス、インターフェイスについてそれぞれ詳しく見ていきます。
【補足】
Javaなどのオブジェクト指向言語において、この抽象クラスやインターフェースをうまく使いこなすことによって、
再利用性や
柔軟性が高いソースコードを実現できます。
しかし実際のソフトウェア開発現場でも、クラスを定義するとき抽象クラスやインターフェイスを自作して使うということは意外と少ないです。(特に小規模なプロジェクトでは…)
これは開発に携わる全てのシステムエンジニアやプログラマーが抽象クラスやインターフェースを完璧に理解している、あるいは使いこなせているわけではないため、無理して使う必要はないなどという考え方があるためです。
(この考え方は「悪」なのですが、実際、抽象クラスやインターフェースを自作しなくてもソフトウェアは完成します)
このような理由のため、抽象クラスとインターフェイスについての説明は当サイトでは「その他」というカテゴリに入れておきました。
Java(オブジェクト指向)の勉強を始めたばかりの方は、このカテゴリは軽く読み流す程度でも問題ありません。
このようなしくみを作れる、ということだけ知っておいてください。
しかし、Javaが提供している抽象クラスやインターフェイスはよく使います。
というより使わないとほとんどのソフトウェアが完成できません。
この点は誤解なさらないでください。
理解の前によくわからなくても実際にやってみるという考え方もときには学習の効率を格段に上げる場合があると考えています。