タグ

抽象クラスに関するbarasixiのブックマーク (6)

  • 10.7 「したい」と「する」を分ける! : Javaのオブジェクト指向入門

    // AGroupClassRunner.java /** * インタフェース。 * Bグループのクラスで作るはずの機能を呼び出すために * Aグループ側で用意します。 */ interface BGroupInterface { /** * 抽象メソッド。 * 計算してもらいます。 */ int calc( int lh, int rh ); } /** * Aグループのクラス。 */ class AGroupClass { /** * Bグループの処理を行うインタフェース。 */ BGroupInterface bGroup; /** * 何か処理をするメソッド。 */ void doLogic() { // 色々処理をしてー。 // Bグループの機能を呼び出す箇所。 int i = bGroup.calc( 100, 200 ); System.out.println( i ); /

  • interfaceと抽象クラスの本質的な違いを勘違いしていた。 - 絶品ゆどうふのタレ

    ずっと勘違いをしていた。 でもこの記事読んで、すごいすっきりわかった。 若干古い記事だけど、こういう良記事がWeb上に掲載されて永く残るのはいいなぁ。 結論から言えば、両者の使い分けは次のようになります。まず、インタフェースは、主に継承階層の異なる複数の型をオブジェクトに持たせるために使います。一方の抽象クラスは、主に同一の継承階層に属するクラスに共通する処理を持ったスーパークラス(基底クラス)として定義します。 (中略) 「型の継承」、「実装の継承」 上述したように、言語仕様の観点から共通点と相違点を挙げると、両者の使い分けは、例えば「クラスでは多重継承ができないので、多重継承をするときには抽象クラスではなく、インタフェースを使う」とか、「インタフェースでは実装を定義できないので、実装の継承が必要であれば抽象クラスを使う」といった認識になりがちです。 しかし、これでは末転倒です。そうで

    interfaceと抽象クラスの本質的な違いを勘違いしていた。 - 絶品ゆどうふのタレ
  • Site Cooler NZ | Points to Note When Shopping for a Washing Machine

    Points to Note When Shopping for a Washing Machine There are different washing machines brands in New Zealand. When shopping, therefore, you need to ensure that first, you get a quality machine; a machine that will last through many years without breaking down. You check product warranties and reviews when shopping to ensure a machine is a good quality. The material of the drum can be enamel, plas

  • 抽象クラスとインターフェースの使い分け

    抽象クラスとインターフェース、この2つの違い、使い分け方が未だにはっきりとはわかりません・・・ 抽象クラスもインターフェースも実装は持たず、抽象クラスはサブクラスで、インターフェースはそれをインプリメントしたクラスで実装を行うのですよね? 両者ともに言わば中身はなく外枠だけ定義されていると言えると思うのですが、だとしたらこの2つの違いや使い分けってどうなるのでしょうか。 抽象クラスでは部分的な実装を含められることや、インターフェースでは実装クラスが全てのメソッドを実装しなければいけない、複数実装できるといった使い方の違いしかないのでしょうか。 だとしたら実際に抽象クラスとして用意するのかインターフェースとして用意するのかの選択基準はなんなのでしょうか。 明確にこういう場合は抽象クラス、こういう場合はインターフェースなどと言った使い分けってあるのでしょうか。

    抽象クラスとインターフェースの使い分け
  • 純粋仮想関数・抽象クラス - インコのC++プログラミング

    #include <iostream> using namespace std; // 抽象クラス(基底クラス)----------- class hello{ private: char *s; public: hello(){} virtual ~hello(){} //仮想デストラクタ [virtual デストラクタ] virtual void hello_world()=0; //純粋仮想関数 [virtual メンバー関数=0;] // 純粋仮想関数を宣言するとそのクラスは「抽象クラス」になる。 // 抽象クラスのインスタンスを作ることができない。 }; void hello::hello_world(){ s = "hello world"; cout << s <<endl; } // 派生クラス(継承クラス)-------- class hello2 :public hel

  • mapee.jp

  • 1