PHPのfinalクラスは、定義の最後のプレフィックスだけで子クラスのメソッドをオーバーライドすることを防ぐクラスです。これは、最終プレフィックスを使用してメソッドを定義すると、メソッドのオーバーライドが防止されることを意味します。通常、PHP OOP の概念を継承すると、クラス階層内で大きな柔軟性が得られます。基本クラスの機能を拡張するために使用される 1 つ以上のサブクラスを作成できますが、PHP の OOP 概念により、拡張不可能なクラスを作成する方法が提供されます。このようなクラスは、最終クラスと呼ばれます。
広告 このカテゴリーの人気コース PHP 開発者 - 専門分野 | 8コースシリーズ | 3 つの模擬テスト無料ソフトウェア開発コースを始めましょう
Web 開発、プログラミング言語、ソフトウェア テスト、その他
構文:
final class Pavan{ }
final public function set_bike(){}
PHP Final クラスは、クラス単語の前に FINAL キーワードを追加するだけで、宣言に基づいて機能します。 Final クラスはクラスを拡張せずに機能します。子クラスは最終メソッドをオーバーライドできません。通常のクラス変数を使用して、final として宣言することはできません。 PHP Final クラスまたはメソッドは、他の通常のクラスと同様に拡張できません。 Final クラスが他の通常のクラスを使用して拡張された場合、Final クラスにより PHP はブラウザ出力で致命的なエラーを返します。 FINAL METHOD も同様です。
以下に例を示します:
ここでは、クラスの前にfinalキーワードを使用してクラスが作成されています。この最後のクラス「Automobile1」は拡張できません。最終クラス内で、最終メソッド/関数が作成されます。次に、メソッド/関数を使用して通常のクラス「Bmwcar1」が作成され、段落タグ内に最終的なメソッド/関数が作成されます。次に、通常の関数/メソッド「display()」を持つ「Bmwcar1」を拡張するクラス「Tata1」が作成されますが、価格()メソッドはTata1クラスには作成されません。これを呼び出すと、finalキーワードにより致命的なエラーが発生するためです。 。拡張性はありません。次に、「$bmwcar1」オブジェクトが作成/作成されます。 display()メソッドとfinalメソッドのprice()の呼び出しは、「Bmwcar1」および「tata1」クラスから行われます。
コード:
<?php final class Automobile1{ final public function set_color1(){ } final public function show1(){ } } class Bmwcar1{ public function display1(){ echo "This is the bmwcar1 class \n";} final public function price1(){echo "This is the bmwcar1 class's final price method \n";} } class Tata1 extends Bmwcar1{ public function display1(){ echo "This is tata1 class \n";} } $bmwcar1 = new Bmwcar1(); $tata1 = new Tata1(); $bmwcar1->display1(); $bmwcar1->price1(); $tata1->display1(); $tata1->price1(); ?>
出力:
ここでは、FINAL キーワードを使用して「A1」クラスが作成されます。次に、2 つの変数を使用して通常の関数「show1()」が作成されます。その内部では、変数の合計が $sum1 変数に格納されます。次に、エコー関数を使用して変数値の合計を出力します。次に、クラス「A1」を拡張するために「B1」クラスが作成されます。 「B1」クラス内で変数の乗算が行われ、$multi1 変数に保存されます。乗算結果はecho機能を使って出力されますが、ここでは最終クラス「A1」を通常のクラス「B1」で拡張しています。ここでは、FINAL クラス/メソッドを拡張します。 FINAL クラスを拡張しているため、致命的なエラーが返されます。
コード:
<?php final Class A1 { function show1($x1,$y1) { $sum1=$x1+$y1; echo "Sum of the given no.s = ".$sum1; } } class B1 extends A1 { function show($x1,$y1) { $multi1=$x1*$y1; echo "The Multiplication of the given no.s = ".$multi1; } } $obj1= new B1(); $obj1->show1(1001,1001); ?>
出力:
ここでは、関数 e($xx1) を持つ通常のクラス「C1」が作成され、次にクラス「C1」を拡張して「C1」パラメータを使用するクラス「D1」が作成されます。したがって、クラス「D1」は「C1」クラスのプロパティを継承し、「D1」クラスのプロパティも含みます。ここまではすべて正しいです。次に、変数の合計を計算する変数「x1」、「y1」を含む最終関数/メソッドを含むクラス「A1」が作成されます。この後、「A1」クラスを拡張するために「B1」クラスが作成されます。ただし、最終クラス、メソッドは拡張できません。試行すると致命的なエラーが発生します。
コード:
<?php class C1 { function e($xx1){ echo 'The value of xx1 variable value'.$xx1; } } class D1 extends C1 { function e($xx1){ $f=2*$xx1; echo 'The double value of f (xx1)'.$f; } } class A1 { final function show($x1,$y1) { $sum1=$x1+$y1; echo "Sum of given no=".$sum1; } } class B1 extends A1 { function show($x1,$y1) { $mult1=$x1*$y1; echo "Multiplication of given no=".$mult1; } } $obj=new D1(); $obj->e(13); $obj= new B1(); $obj->show(100,100); ?>
出力:
以下の例では、最初に通常のクラスが作成され、次に 2 つの変数値の合計を計算するためにその内部に 2 つの変数を含む最終メソッドが作成され、その後新しいメソッド/関数が内部に作成されます。 2 つの変数値を乗算し、結果を返す通常のクラス。ここでは最後のメソッドのみが作成され、拡張も行わずに呼び出されるため、エラーは発生しません。変数の合計と変数の乗算も出力されます。
コード:
<?php class BaseClassone{ final function calculateone($val11,$val12){ $sum1 = $val11+$val12; echo "Sum of the given nums = ".$sum1; } function showone($x1,$y1){ $multip1=$x1*$y1; echo "Multiplication of the given nums = ".$multip1."\n"; } } $obj= new BaseClassone(); $obj->showone(12,12); $obj->calculateone(10,10); ?>
出力:
PHP Final Class の概念は独特であり、通常のクラスのように拡張できません。 Final クラスと同様に、Final メソッドも独自の方法で拡張できません。 PHP Final Class の概念は、大規模な継承機能を防止し、合成を促進します。 Final クラスのすべてのパブリック API は、インターフェイスの一部です。カプセル化に役立ちます。最後のクラス/メソッドは、そのクラス/メソッドが子のクラス/メソッドをオーバーライドすることを防ぎます。 PHP Final Class は悪用を防ぎます。最終クラスは拡張できませんが、これらの最終クラスは条件によっては拡張可能です。これは、Final クラスがサブクラスになる、またはサブクラスになる可能性がありますが、スーパークラスに変えることはできないのと似ています。
PHP の Final キーワードは、アクセス指定子の直前または直後に配置することもできます。 PHP の最終メソッドには、特定の戻り値の型とメソッド名も含めるべきではありません。
以上がPHP最終クラスの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。