2012-01-11 13 views
1

完全抽象クラスとインタフェースの理論的な違いを正しく理解しているかどうかは疑問です。私は技術的な違いを理解しています。概念上の相違点:完全抽象クラスv。インタフェース

私の理解では、クラスは具体的なオブジェクトとそれらのオブジェクトが示すことができる機能のためのインタフェースに使用されています。だから私が車のクラスを作っていて、その車にナビゲーション機能を持たせたければ、私は抽象クラスではなくナビゲーションインターフェイスを正しく作っていましたか?

+4

このトピックはトピックになっていないので、代わりにここで簡単な回答を投稿します。概念上の相違点:クラスはエンティティのプロパティを指定します(名詞、 "Person"、 "Car"などとしばしば識別されます)。インタフェースは、エンティティのTYPEの動作を指定します。完全抽象クラスでは、すべてのサブクラスがすべて同じプロパティを継承し、(定義によって)まだ同じエンティティ(Car、Truck、MotorbikeはまだVehicleです)である子タイプについての前提を設定する必要があります。インタフェースはプロパティに関するそのような仮定をしません。エンティティ(Drivable)のタイプが何を行うことができるのかを定義するだけです。 –

+0

ダリルが大いに助けてくれてありがとう! –

答えて

1

この2つの理論的な違いは、ここで話題にはなりません。http://programmers.stackexchange.comにお尋ねください。

そのため、最も近い上、トピックの質問は、あなたはおそらく既に知っている、あなたも一緒に何ができるかである - classがすることができ、それはextend一つだけclassすることができます。

0

完全抽象クラスは、インターフェイスと非常によく似ていますが、実質的に同じです。特定の言語に関しては、違いが生じます。たとえば、Javaクラスでは他のクラスを1つだけ拡張できますが、多くのインタフェースを実装できます。

あなたの例については正しいです。クラスは2つの主なもののコレクションです:データとそのデータを扱うメソッド。

0

はい、あなたは正しい方向にあります。これをこのように考えてください。あなたには果物があります。しかし、あなたはそれがどれかも知りません。だから、あなたは今どのように彼らがこのインタフェースを使用することができるユーザーまでのインターフェイスの果物を作る。リンゴ、オレンジ、または桃かもしれません。インターフェイスの果物は、それが成長する明確なサイズ、色および環境を有するであろう。この情報は果物の種類によって変わります。

つまり、インターフェイスは、長期的に達成しようとしている非常に特殊なもののスケルトンのようなものです。

2

あなたは正しいですか?

ボートまたは飛行機は、自動駐車機能またはナビゲーションシステムを持つこともできます。 しかし、ほとんどのモデルでは、何かがボートか車かです(飛行機を出て行かせましょう...)。

実際には、Javaでは抽象クラスが特定の(一意の)カテゴリに拡張を強制する良い方法です。 AbstractPlaneとAbstractBoatを持っている場合、オブジェクトはどちらか一方であると確信しています。

関連する問題