オブジェクト指向プログラミング > リスコフの置換原則

リスコフの置換原則(LSP)

LSP: Liskov Substitution Principle
派生型はその基本型と置換可能でなければならない。

単一責任の原則でも触れましたがクラスとは責任を顕す為の雛形に過ぎません。
それ以上でも以下でもないです。必ずしもインターフェイス継承のみを指してる訳では無いのであしからず。

javaで継承の事をextendsと言うように「継承」とは拡張のことです。基底クラスをパワーアップさせる事は出来ても、基底クラスの「責任」に反することは出来ません。

メソッドを使う使わないと言った瑣末な話では無く、もっと抽象的な「責任」に対して反することになります。捉え辛いかもしれませんが判断を誤ると性質の悪い設計ミスで悩む事請け合いです。

class neler{
    public:
        void kakiko();
};

class vipper : public neler{}; // おk。vipperはねらーだ

class mymiku : public neler{}; // ×。kakikoが必要かも知れんがねらーではない

ある意味では最も忌避すべき原則なので心に刻み込んでおいてくだしあ。