抽象クラスとインターフェース、この2つの違い、使い分け方が未だにはっきりとはわかりません・・・
抽象クラスもインターフェースも実装は持たず、抽象クラスはサブクラスで、インターフェースはそれをインプリメントしたクラスで実装を行うのですよね?
両者ともに言わば中身はなく外枠だけ定義されていると言えると思うのですが、だとしたらこの2つの違いや使い分けってどうなるのでしょうか。
抽象クラスでは部分的な実装を含められることや、インターフェースでは実装クラスが全てのメソッドを実装しなければいけない、複数実装できるといった使い方の違いしかないのでしょうか。
だとしたら実際に抽象クラスとして用意するのかインターフェースとして用意するのかの選択基準はなんなのでしょうか。
明確にこういう場合は抽象クラス、こういう場合はインターフェースなどと言った使い分けってあるのでしょうか。
A 回答 (5件)
- 最新から表示
- 回答順に表示
No.5
- 回答日時:
ご参考にされて下さい。
抽象クラスはバージョン管理するための単純で簡単な方法を提供します
基本クラスを更新することにより
すべての継承クラスに自動的に変更が反映されます
一方、インターフェイスはいったん作成した後は変更できません
インターフェイスの新しいバージョンが必要な場合は
まったく新しいインターフェイスを作成する必要があります
異なるオブジェクトで利用できる機能を作成する場合は
インターフェイスを使用します
抽象クラスは主に互いに密接な関係を持つ
オブジェクトに対して使用します
一方インターフェイスは互いに関連性のないクラスに対して
共通の機能を提供する場合に最も適しています
No.4
- 回答日時:
Javaは、多重継承ができません。
あるクラスに複数の機能をもたせたい場合は、抽象クラスとインタフェースを使い分けたりします。
抽象クラスは、実装をもたないわけではありません。
実装をもつこともできるし、抽象化されたメソッドも持ちます。
予め実装しておきたい機能がある場合は、抽象クラスを利用したりします。
実装がない抽象クラスは、インタフェースとほぼ同様です。
No.2
- 回答日時:
オブジェクト指向の設計において、インターフェイス、抽象クラスはとても重要な役割を果たしています。
普通に使っている分にはメリットが感じにくいと思うのですが、きちっとした設計を行うようになってくると、色々と役に立ちます。どのようなときにインターフェイス、抽象クラスが効果を発揮するかは、デザインパターンを勉強してみると良いでしょう。
Java初心者だと、デザインパターンは難しいと感じるかもしれません。けれども、設計におけるバイブル(絶対ではない)とも言えるので、勉強しておいて損はないはずです。
No.1
- 回答日時:
(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 …
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Java javaのクラスの分け方について質問です。 APIの内部用と外部用でクラスを分けたいのですがインター 2 2022/04/26 16:06
- C言語・C++・C# C言語初心者 構造体 課題について 1 2023/03/10 19:30
- 教育・文化 教員をめざしている者です。以前教育実習で小学校に行った時、なんでもない会話から子供達にある国が嫌いと 13 2023/08/24 12:19
- その他(プログラミング・Web制作) Chromeのデベロッパーツール プログラム 2 2022/06/21 20:27
- Java java 飾子を付けること(public static・・・) ・コンソールへの出力処理はmainメ 2 2022/06/16 19:34
- その他(教育・科学・学問) 「工夫」とはなんですか? 9 2023/05/05 07:55
- PHP アップロード画像数でCSSを分けることに成功したのですが、画像の横に文字を並べることが出来ません。 3 2023/07/28 17:16
- 日本語 きみの嫁さんは私が見つけてあげるよ。 11 2022/11/13 21:01
- Java javaの質問です 次の機能を有するメソッド4つを自クラスに作成し、実装したいです 【機能】 足し算 1 2022/06/15 17:49
- 教えて!goo 結局、ネットは、匿名という制度があったほうがよいのか、無いほうがよいのか 希望者だけでも氏素性を明ら 19 2023/03/07 23:24
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
C# 継承の問題で programに示さ...
-
(vba)他のアプリケーションの右...
-
インターフェースとサブクラス...
-
javaでクッキー認証を必要とす...
-
オブジェクト指向の特徴
-
ComparableとComparatorの違い...
-
JAVAでCPUなどのシリアル番...
-
VBがオブジェクト指向言語でな...
-
Java StringBuilderクラスについて
-
抽象クラスをJUNITでテストする...
-
インタフェース、クラスの継承...
-
Class.forName("org.postgresql...
-
全パッケージの取得、全クラス...
-
インターフェースの利点は?
-
interface,extend,implementの...
-
interfaceとabstract
-
TableViewでタップした時にキー...
-
インターフェースとは
-
Excelで =EMBED("Acrobat Docu...
-
SQLです教えてくださいお願いし...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
interface,extend,implementの...
-
(vba)他のアプリケーションの右...
-
抽象クラスをJUNITでテストする...
-
「ラッパークラス」の存在意義...
-
ASP.NETでの共通コードの書き方...
-
JTextFieldの入力制限
-
「継承されたメソッドの可視性...
-
VB DLLプロジェクトについて
-
C# 「データが失なわれる可能性...
-
c++でのヘッダーファイルの循環...
-
【C#】クラスのコンストラクタ...
-
「IOException は対応する try ...
-
メソッドの引数にクラス名を渡す
-
ファイルパスが取得出来ない(P...
-
ゲッターを使わないで変数にア...
-
Javaのインスタンス化の構文の...
-
オーバーライドとラッパーの違い
-
vb.net 自作プロパティの削除に...
-
なぜインタフェースを使うのか?
-
VBがオブジェクト指向言語でな...
おすすめ情報