タグ付けされた質問 「abstract-class」

抽象クラスは、インスタンス化できないクラスです。これらは、いくつかの具象クラスに共通の機能とインターフェース仕様を提供するために存在します。

7
std :: vector <AbstractClass>を宣言できないのはなぜですか?
C#での開発にかなりの時間を費やした後、インターフェイスとして使用する目的で抽象クラスを宣言すると、この抽象クラスのベクトルをインスタンス化して子クラスのインスタンスを格納できないことに気付きました。 #pragma once #include &lt;iostream&gt; #include &lt;vector&gt; using namespace std; class IFunnyInterface { public: virtual void IamFunny() = 0; }; class FunnyImpl: IFunnyInterface { public: virtual void IamFunny() { cout &lt;&lt; "&lt;INSERT JOKE HERE&gt;"; } }; class FunnyContainer { private: std::vector &lt;IFunnyInterface&gt; funnyItems; }; 抽象クラスのベクトルを宣言する行により、MSVS2005で次のエラーが発生します。 error C2259: 'IFunnyInterface' : cannot …

14
Javaの抽象クラスとインターフェイス
私は質問をされました、私は私の答えをここでレビューしてもらいたいと思いました。 Q:インターフェースを実装するよりも、抽象クラスを拡張する方が適切なシナリオはどれですか? A:テンプレートメソッドデザインパターンを使用している場合。 私は正しいですか? 質問を明確に述べることができなかった場合は申し訳ありません。 抽象クラスとインターフェイスの基本的な違いを知っています。 1)特定の操作(メソッドの実装)ではすべてのサブクラスに同じ機能を実装し、他のいくつかの操作(メソッドシグネチャのみ)では異なる機能を実装する必要がある場合は、抽象クラスを使用します 2)インターフェースの実装に準拠できるように、署名を同じ(および実装が異なる)にする必要がある場合は、インターフェースを使用します 3)最大1つの抽象クラスを拡張できますが、複数のインターフェースを実装できます 質問を繰り返します:上記のシナリオ以外に、特に抽象クラスを使用する必要があるシナリオはありますか(テンプレートメソッドのデザインパターンは概念的にこれのみに基づいていることがわかります)? インターフェイスと抽象クラス これら2つのどちらを選択するかは、実際には何をしたいかによって異なりますが、幸いなことに、ErichGammaは私たちを少し助けてくれます。 常にトレードオフがありますが、インターフェイスは基本クラスに関して自由を与え、抽象クラスは後で新しいメソッドを追加する自由を与えます。–エーリヒ・ガンマ コード内の他の多くのものを変更せずにインターフェイスに移動して変更することはできないため、これを回避する唯一の方法は、まったく新しいインターフェイスを作成することです。これは必ずしも良いことではない場合があります。 Abstract classes主に密接に関連するオブジェクトに使用する必要があります。Interfaces無関係なクラスに共通の機能を提供するのに優れています。

10
JUnitを使用してJavaで抽象クラスをテストする方法は?
JUnitを使用したJavaテストは初めてです。Javaを使用する必要があり、単体テストを使用したいと思います。 私の問題は、いくつかの抽象メソッドを持つ抽象クラスがあります。しかし、抽象的ではないいくつかの方法があります。このクラスをJUnitでテストするにはどうすればよいですか?サンプルコード(非常に単純): abstract class Car { public Car(int speed, int fuel) { this.speed = speed; this.fuel = fuel; } private int speed; private int fuel; abstract void drive(); public int getSpeed() { return this.speed; } public int getFuel() { return this.fuel; } } テストgetSpeed()してgetFuel()機能させたい。 この問題と同様の質問がここにありますが、JUnitを使用していません。 JUnitのFAQセクションでこのリンクを見つけましたが、この例で作成者が何を言いたいのかわかりません。このコード行はどういう意味ですか? public abstract Source getSource() …
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.