PHP最終クラス

WBOY
WBOYオリジナル
2024-08-29 13:06:03982ブラウズ

PHPのfinalクラスは、定義の最後のプレフィックスだけで子クラスのメソッドをオーバーライドすることを防ぐクラスです。これは、最終プレフィックスを使用してメソッドを定義すると、メソッドのオーバーライドが防止されることを意味します。通常、PHP OOP の概念を継承すると、クラス階層内で大きな柔軟性が得られます。基本クラスの機能を拡張するために使用される 1 つ以上のサブクラスを作成できますが、PHP の OOP 概念により、拡張不可能なクラスを作成する方法が提供されます。このようなクラスは、最終クラスと呼ばれます。

広告 このカテゴリーの人気コース PHP 開発者 - 専門分野 | 8コースシリーズ | 3 つの模擬テスト

無料ソフトウェア開発コースを始めましょう

Web 開発、プログラミング言語、ソフトウェア テスト、その他

構文:

final class Pavan{ }
final public function set_bike(){}

PHP Final クラスはどのように機能しますか?

PHP Final クラスは、クラス単語の前に FINAL キーワードを追加するだけで、宣言に基づいて機能します。 Final クラスはクラスを拡張せずに機能します。子クラスは最終メソッドをオーバーライドできません。通常のクラス変数を使用して、final として宣言することはできません。 PHP Final クラスまたはメソッドは、他の通常のクラスと同様に拡張できません。 Final クラスが他の通常のクラスを使用して拡張された場合、Final クラスにより PHP はブラウザ出力で致命的なエラーを返します。 FINAL METHOD も同様です。

PHP Final クラスの例

以下に例を示します:

例 #1

ここでは、クラスの前に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();
?>

出力:

PHP最終クラス

例 #2

ここでは、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);
?>

出力:

PHP最終クラス

例 #3

ここでは、関数 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);
?>

出力:

PHP最終クラス

例 #4

以下の例では、最初に通常のクラスが作成され、次に 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最終クラス

メリット

PHP Final Class の概念は独特であり、通常のクラスのように拡張できません。 Final クラスと同様に、Final メソッドも独自の方法で拡張できません。 PHP Final Class の概念は、大規模な継承機能を防止し、合成を促進します。 Final クラスのすべてのパブリック API は、インターフェイスの一部です。カプセル化に役立ちます。最後のクラス/メソッドは、そのクラス/メソッドが子のクラス/メソッドをオーバーライドすることを防ぎます。 PHP Final Class は悪用を防ぎます。最終クラスは拡張できませんが、これらの最終クラスは条件によっては拡張可能です。これは、Final クラスがサブクラスになる、またはサブクラスになる可能性がありますが、スーパークラスに変えることはできないのと似ています。

PHP の Final キーワードは、アクセス指定子の直前または直後に配置することもできます。 PHP の最終メソッドには、特定の戻り値の型とメソッド名も含めるべきではありません。

以上がPHP最終クラスの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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