プロが教えるわが家の防犯対策術!

抽象クラスとインターフェース、この2つの違い、使い分け方が未だにはっきりとはわかりません・・・

抽象クラスもインターフェースも実装は持たず、抽象クラスはサブクラスで、インターフェースはそれをインプリメントしたクラスで実装を行うのですよね?

両者ともに言わば中身はなく外枠だけ定義されていると言えると思うのですが、だとしたらこの2つの違いや使い分けってどうなるのでしょうか。

抽象クラスでは部分的な実装を含められることや、インターフェースでは実装クラスが全てのメソッドを実装しなければいけない、複数実装できるといった使い方の違いしかないのでしょうか。

だとしたら実際に抽象クラスとして用意するのかインターフェースとして用意するのかの選択基準はなんなのでしょうか。

明確にこういう場合は抽象クラス、こういう場合はインターフェースなどと言った使い分けってあるのでしょうか。

A 回答 (5件)

ご参考にされて下さい。



抽象クラスはバージョン管理するための単純で簡単な方法を提供します
基本クラスを更新することにより
すべての継承クラスに自動的に変更が反映されます

一方、インターフェイスはいったん作成した後は変更できません
インターフェイスの新しいバージョンが必要な場合は
まったく新しいインターフェイスを作成する必要があります

異なるオブジェクトで利用できる機能を作成する場合は
インターフェイスを使用します
抽象クラスは主に互いに密接な関係を持つ
オブジェクトに対して使用します
一方インターフェイスは互いに関連性のないクラスに対して
共通の機能を提供する場合に最も適しています
    • good
    • 0

Javaは、多重継承ができません。


あるクラスに複数の機能をもたせたい場合は、抽象クラスとインタフェースを使い分けたりします。

抽象クラスは、実装をもたないわけではありません。
実装をもつこともできるし、抽象化されたメソッドも持ちます。

予め実装しておきたい機能がある場合は、抽象クラスを利用したりします。
実装がない抽象クラスは、インタフェースとほぼ同様です。
    • good
    • 0
    • good
    • 0

オブジェクト指向の設計において、インターフェイス、抽象クラスはとても重要な役割を果たしています。



普通に使っている分にはメリットが感じにくいと思うのですが、きちっとした設計を行うようになってくると、色々と役に立ちます。どのようなときにインターフェイス、抽象クラスが効果を発揮するかは、デザインパターンを勉強してみると良いでしょう。

Java初心者だと、デザインパターンは難しいと感じるかもしれません。けれども、設計におけるバイブル(絶対ではない)とも言えるので、勉強しておいて損はないはずです。
    • good
    • 0

(Javaの)abstract class


 =(Javaの)Interfaceの、
  ちょっと便利バージョン。
ただし多用が効かない、みたいな?(ホントか?)
---

必読!
http://java-house.jp/ml/archive/j-h-b/026674.htm …
http://java-house.jp/ml/topics/topics.html#langu …
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!