PHP プログラマーはマスターしています
クラス継承は PHP で最もよく使用されるプログラミング機能です。基本クラス (親クラス) を作成し、その中でいくつかの基本的なメソッドを定義し、サブクラスでメソッドを拡張できます。ただし、親クラスに非常に重要なメソッドがある場合、サブクラスがこのメソッドを継承すると、プログラムに問題が発生する可能性があるため、それらをサブクラスから継承することはできません。したがって、このメソッドは「プライベート」であり、拡張できないことを望んでいます。これが、PHP が継承されていないメソッドを変更するために Final キーワードを使用する理由です。
PHP の Final キーワードはクラスを変更し、クラス内のメソッドも変更できますが、それらの機能は似ています。つまり、final キーワードを使用して変更した場合、変更されたクラスまたはメソッドは拡張または継承されません。正直に引用することしかできません。クラスの前でfinalを使用する場合は、このクラスが継承を使用できないことを意味し、メソッドの前でPHPのfinalキーワードを使用する場合は、このメソッドをオーバーライドできないことを意味します。真実は非常に単純です。簡単な例も見てみましょう。
<ol class="dp-xml"><li class="alt"> <span class="tag"><</span> ?PHP </li><li><span>final class BaseClass { </span></li><li class="alt"><span>public function test() { </span></li><li><span>echo "BaseClass::test() calledn"; </span></li><li class="alt"><span>} </span></li><li><span>final public function moreTesting() { </span></li><li class="alt"><span>echo "BaseClass::moreTesting() calledn"; </span></li><li><span>} </span></li><li class="alt"><span>} </span></li><li><span>class ChildClass extends BaseClass { </span></li><li class="alt"><span>public function moreTesting() { </span></li><li><span>echo "ChildClass::moreTesting() calledn"; </span></li><li class="alt"><span>} </span></li><li><span>} </span></li><li class="alt"><span>// Results in Fatal error: Cannot override final method BaseClass::moreTesting() </span></li><li><span class="tag">?></span><span> </span> </li></ol>
この例では、クラスとメソッドの前に PHP の Final キーワードを追加して、必要に応じてこのクラスを出力することはできません。 基本的には次のようになります。クラスまたはメソッドが Final を使用する場合、そのクラスは継承できないか、サブクラスは親クラスのメソッドをオーバーライドできないことを意味することに注意してください。