クラスを持つと書かれている本があり、それから を継承PhoneNumberするクラスを定義します。私はかつて、アドレスは電話番号ではないため、継承することはできないと言いました。それは「である」関係でなければなりません。たとえば、犬は動物であり、から継承させることができます。AddressPhoneNumberDogAnimal
しかし、LSP -- Liskov Substitution Principleに従わなければならないので、正方形は "is a" 長方形 (幅 == 高さ) であるため、"is a" ルールは実際には決定要因ではありませんが、LSP はできると言います。クラスを定義し、そのSquareクラスから継承しRectangleます。aRect英語での簡単な説明は、オブジェクトはメッセージsetWidthAndHeight(w, h)に応答できますが、aSquare正しく応答できず、プログラム全体が正しく実行できないということだと思います。
驚くべきことに、Addressクラスを継承するPhoneNumberクラスは「is a」の関係に違反していますが、LSP には違反していません。正式には、どの OOP 原則に違反していますか?