ホームページ >バックエンド開発 >PHPの問題 >PHPにおけるリスコフ置換原理の考え方は何ですか

PHPにおけるリスコフ置換原理の考え方は何ですか

WBOY
WBOYオリジナル
2022-02-25 11:15:132105ブラウズ

PHP では、リスコフ置換原則はクラス継承の制約です。この原則の主な考え方は、冗長なメソッドや属性を持つ不適切なクラスを気軽に継承できないということです。サブクラスは親クラスを拡張できます。クラスの関数を変更できますが、親クラスの元の関数を変更することはできません。

PHPにおけるリスコフ置換原理の考え方は何ですか

この記事の動作環境: Windows 10 システム、PHP バージョン 7.1、Dell G3 コンピューター。

php におけるリスコフ置換原則の考え方は何ですか。

リスコフ置換原則は、ソフトウェア内で基本クラス オブジェクトがそのサブクラス オブジェクトに置き換えられると、プログラムはソフトウェア エンティティがサブクラス オブジェクトを使用する場合、必ずしも基本クラス オブジェクトを使用できるとは限りません。

リスコフ置換原則は、開始および終了原則を実装するための重要な方法の 1 つです。サブクラス オブジェクトは、基本クラス オブジェクトが使用される場所であればどこでも使用できるため、プログラム内のオブジェクトの定義には基本クラスの型を使用するようにしてください。実行時に、サブクラス タイプが決定され、親クラス オブジェクトがサブクラス オブジェクトに置き換えられます。

リスコフ置換原則を使用する場合は、サブクラスのすべてのメソッドを親クラスで宣言するか、サブクラスが親クラスで宣言されたすべてのメソッドを実装する必要があることに注意してください。親クラスを抽象クラスまたはインターフェイスとして設計し、サブクラスが親クラスを継承するか親インターフェイスを実装し、親クラスで宣言されたメソッドを実装するようにしてください。実行時に、サブクラスのインスタンスが親クラスのインスタンスを置き換えます。システム機能の拡張が容易であり、元のサブクラスのコードを変更する必要がなく、新しい機能の追加も新しいサブクラスを追加することで実現できます。

コードで理解する

<?php
//例子1
class Bird{
  protect function fly(){
  }
}
//翠鸟
class KingFisher extends Bird{
}
//鸵鸟
class Ostrich extends Bird{
  //鸵鸟不会飞啊
}
//例子2
class A{
  protect function add($a, $b){
    return $a + $b;
  }
} 
//重载
class B extends A{
  protected function add($a, $b){
    return $a + $b + 100;
  }
}
?>

リスコフ置換原則はクラス継承の制約です。 Liskov 置換原則には 2 つの理解があります:

1. 冗長なメソッドまたは属性を持つ不適切なクラスを単純に継承することはできません。 (例1)

2. サブクラスは親クラスの機能を拡張することはできますが、親クラスの元の機能を変更することはできません。 (例 2)

リスコフ置換原則には、次のような隠された意味が含まれています。

① サブクラスは親クラスの抽象メソッドを実装できますが、親クラスの非抽象メソッドをオーバーライドすることはできません。親クラス。

② サブクラスは独自の独自のメソッドを追加できます。

③ サブクラスのメソッドが親クラスのメソッドをオーバーライドする場合、メソッドの前提条件 (つまり、メソッドの仮パラメータ) は、親クラスのメソッドの入力パラメータよりも緩くなります。

④ サブクラスのメソッドが親クラスの抽象メソッドを実装する場合、メソッドの事後条件 (メソッドの戻り値) は親クラスの事後条件よりも厳しくなります。

推奨学習: 「PHP ビデオ チュートリアル

以上がPHPにおけるリスコフ置換原理の考え方は何ですかの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。