リヒター置換原則:ベースクラスを配置するすべての参照は、その子クラスのオブジェクトを使用して透明でなければなりません。
人気の理解:サブクラスは親クラスの機能を拡張することができますが、元の関数の親クラスを変更することはできません。
コード例:
1 // PC 2 パブリック 抽象 クラスコンピュータ 3 { 4 パブリック 抽象 ボイド使用(); 5。 } 6。 7。 /// <まとめ> 8。 /// ラップトップ 9。 /// </要約> 10 クラスLaptopCommputer:コンピュータ 11 { 12は、 公衆 オーバーライドが 無効()を使用する 13である { 14 Console.WriteLineを(「ラップトップにある」); 15 } 16 } 17 18である /// <まとめ> 19。 /// デスクトップコンピュータ 20は /// </要約> 21である クラスDesktopComputer:コンピュータ 22は 、{ 23は、 公衆 オーバーライドが 無効(使用)の 24 { 25 Console.WriteLineを(" 現在使用中デスクトップ" ); 26である } 27 } 28 クラスプログラム 29 { 30 静的 ボイドメイン(文字列[] Argsの) 31である { 32 // ノートブックコンピュータ 33は、 コンピュータラップトップ= 新しい新しいLaptopCommputer(); 34である ; laptop.Use() 35 // デスクトップコンピュータ 36 コンピュータdesktopComputer = 新しい新しいDesktopComputer(); 37 desktopComputer.Use(); 38である 39 Console.ReadLine(); 40 } 41です }
ソフトウェアエンティティが、サブクラスのオブジェクトである場合、ソフトウェアがそのサブクラスのオブジェクトへの基底クラスオブジェクトに置き換えられることリヒター置換原則が示すように、プログラムは、それから、ではなく、その逆、任意のエラーや例外を持っていません。上にベースクラスのオブジェクトを使用することができないかもしれません。
例えば:私は動物のように、私は犬が好き必要があり、その犬は動物のサブクラスですが、彼らはまた、動物であるが、私は犬のように、私は、ネコ、マウスを含む任意の動物のように推測することはできません。
あるいはリヒター原則はできるだけターゲットを定義し、実行時に決定するために、サブクラスオブジェクト、プログラムにおける基本型の使用を使用することができるベースクラスの局所使用ので開閉原理を達成するための一つの重要な方法でありますそのサブクラスの種類、オブジェクトを置き換えるために、親クラスオブジェクトのサブクラス。
置換原則の、親クラスがサブクラスのランタイムインスタンスは、親クラスのインスタンスを置き換え、サブクラスがスーパークラスまたは親の実装を継承し、実装するメソッドが親クラスで宣言さそうという、抽象クラスやインタフェースに設計されてしなければならないとき、内部の目で、簡単に新しいサブクラスを追加することによって達成することができる新たな機能を追加し、元のサブクラスのコードを変更することなく、システムの機能を拡張することができます。