ホームページ >バックエンド開発 >PHPチュートリアル >PHP抽象クラスapplicationsを正しく理解する_PHPチュートリアル
For
自然言語では、抽象概念はオブジェクトの大きな説明であり、これは特定の種類のオブジェクトに共通の特性であると理解されています。 PHP にも同じことが当てはまります。クラスを抽象化する場合、このクラスは、そのサブメソッドが実装する必要があるいくつかの動作を示すテンプレートである必要があります。
PHP 抽象クラス アプリケーションの定義:
abstract class ClassName{
}
PHP 抽象クラス アプリケーションの重要なポイント:
1. いくつかのメソッドを定義し、サブクラスはこの抽象化のすべてのメソッドを完全に実装する必要があります。
2. 抽象クラスからオブジェクトを作成することはできません。その意味は拡張されることです
3. 抽象クラスには通常、抽象メソッドがあり、メソッドには中括弧がありません
PHP 抽象クラス アプリケーションのキーポイント:
1.抽象メソッドは具象を実装する必要はありません 関数はサブクラスによって完成されます
2. サブクラスが抽象クラスのメソッドを実装する場合、サブクラスの可視性は抽象メソッドの定義以上である必要があります
3。抽象クラスのパラメータはパラメータを持つことも、空にすることもできます
4. 抽象メソッドにパラメータがある場合、サブクラスの実装にも同じ数のパラメータが必要です
PHP 抽象クラスのアプリケーション例:
abstract public function_name( ); //中括弧
がないことに注意してください。デモンストレーションとして、単純な抽象クラスを実装してみましょう: 長方形の面積を計算します。この長方形は形状クラスから拡張できます。
<ol class="dp-xml"> <li class="alt"><span><span class="tag"><</span><span> ?PHP </span></span></li><li><span>abstract class Shape { </span></li><li class="alt"><span>abstract protected function get_area(); </span></li><li><span>//和一般的方法不同的是,这个方法没有大括号 </span></li><li class="alt"><span>//你不能创建这个抽象类的实例:$</span><span class="attribute">Shape_Rect<br /></span><span> = </span><span class="attribute-value">new</span><span> Shape(); </span></li><li><span>} </span></li><li class="alt"><span>class Rectangle extends Shape{ </span></li><li><span>private $width; </span></li><li class="alt"><span>private $height; </span></li><li><span>function __construct($</span><span class="attribute">width</span><span>=</span><span class="attribute-value">0</span><span>,<br />$</span><span class="attribute">height</span><span>=</span><span class="attribute-value">0</span><span>){ </span></li><li class="alt"><span>$this-</span><span class="tag">></span><span class="attribute">width</span><span>=$width; </span></span></li> <li> <span>$this-</span><span class="tag">></span><span class="attribute">height</span><span>=$height; </span> </li> <li class="alt"><span>} </span></li> <li><span>function get_area(){ </span></li> <li class="alt"> <span>echo ($this-</span><span class="tag">></span><span>width+$this-</span><span class="tag">></span><span>height)*2; </span> </li> <li><span>} </span></li> <li class="alt"><span>} </span></li> <li> <span>$</span><span class="attribute">Shape_Rect</span><span> = </span><span class="attribute-value">new</span><span> Rectangle(20,30); </span> </li> <li class="alt"> <span>$Shape_Rect-</span><span class="tag">></span><span>get_area(); </span> </li> <li> <span class="tag">?></span><span> </span> </li> <li class="alt"> <span class="tag"><</span><span> ?PHP </span></li><li><span>abstract class Shape { </span></li><li class="alt"><span>abstract protected function get_area(); </span></li><li><span>//和一般的方法不同的是,这个方法没有大括号 </span></li><li class="alt"><span>//你不能创建这个抽象类的实例:$</span><span class="attribute">Shape_Rect</span><span> <br />= </span><span class="attribute-value">new</span><span> Shape(); </span></li><li><span>} </span></li><li class="alt"><span>class Rectangle extends Shape{ </span></li><li><span>private $width; </span></li><li class="alt"><span>private $height; </span></li><li><span>function __construct($</span><span class="attribute">width</span><span>=</span><span class="attribute-value">0</span><span>,$</span><span class="attribute">height</span><span>=</span><span class="attribute-value">0</span><span>){ </span></li><li class="alt"><span>$this-</span><span class="tag">></span><span class="attribute">width</span><span>=$width; </span> </li> <li> <span>$this-</span><span class="tag">></span><span class="attribute">height</span><span>=$height; </span> </li> <li class="alt"><span>} </span></li> <li><span>function get_area(){ </span></li> <li class="alt"> <span>echo ($this-</span><span class="tag">></span><span>width+$this-</span><span class="tag">></span><span>height)*2; </span> </li> <li><span>} </span></li> <li class="alt"><span>} </span></li> <li> <span>$</span><span class="attribute">Shape_Rect</span><span> = </span><span class="attribute-value">new</span><span> Rectangle(20,30); </span> </li> <li class="alt"> <span>$Shape_Rect-</span><span class="tag">></span><span>get_area(); </span> </li> <li> <span class="tag">?></span><span> </span> </li> </ol>
これも簡単な例であり、基本的に PHP での抽象クラスの使用法を示しています。残りについてはこれ以上説明しません。個人的には、抽象クラスは一般に大規模なプロジェクトで使用されると思います。なぜなら、抽象クラスには遵守すべき「ルール」が多すぎて使いにくいと思うからです。もちろん、これは単なる私の意見です。さらにいくつか言いたいことがあります。PHP 抽象クラス アプリケーションは単一継承です。つまり、1 つのクラスからのみ継承できますが、クラス A とクラス B を継承する 1 つのクラスは継承できません。そのような関数を実装したい場合。 、インターフェイスを使用する必要があります。関連する知識については、当面は PHP インターフェイスの知識については説明しません。一言で言えば、単一の継承と複数のインターフェイスです。