abstract(抽象クラス)

abstract.png
abst.png
C#でも、Javaでもabstractが予約語になっている。
C++ではvirtualが似たような役割をする。
しかし両者には大きな違いがあります。その違いを以下に記載します
抽象クラス インタフェース 具象クラス
抽象メソッド O O O
普通のメソッド O X O
派生する時 extends implements extends
多重継承 X O X
メンバ O X O
インスタンス化 X X O

関数にだけつける修飾子のabstract

どんな時につかうのか?

  • このメソッドは絶対実装してほしい、という印に使う。
  • このメソッドは派生クラスによって振る舞いが違う、場合に使う。

もし、どの派生クラスでも全く同じ振る舞いならば、ただのメンバ関数で良いのだ。
ああ、私は今まで、各クラスによって異なる振る舞いをしてほしいとき、引数で対処してたけど、
それは間違いってこと???

感想

abstractという修飾子はまるで、「インスタンス化するな」というただの印みたいに思える。

サポートサイト Wikidot.com