PHP Final 类是一个防止仅通过定义的 Final 前缀覆盖子类的方法的类。这意味着如果我们定义一个带有final前缀的方法,那么它将防止重写该方法。通常,PHP OOP 概念的继承将允许类层次结构内的巨大灵活性。您可以创建一个或多个用于扩展基类功能的子类,但 PHP 的 OOP 概念提供了一种创建不可扩展类的方法。这样的课程被称为 Final Class/Final Classes。
广告 该类别中的热门课程 PHP 开发人员 - 专业化 | 8 门课程系列 | 3次模拟测试开始您的免费软件开发课程
网络开发、编程语言、软件测试及其他
语法:
final class Pavan{ }
final public function set_bike(){}
PHP Final Class 基于声明工作,只需在类词前添加 FINAL 关键字即可。 Final Class 无需延长课程即可进行。子类不能重写final方法。普通类变量不能用于声明为final。 PHP Final 类或方法不能像其他普通类一样进行扩展。如果使用任何其他普通类扩展 Final 类,则 Final 类将导致 PHP 在浏览器输出中返回 FATAL ERROR。最终方法也是如此。
以下是下面给出的示例:
这里使用类之前的final关键字创建了一个类。最后一个类别“Automobile1”无法扩展。在最终类内部,创建最终方法/函数。然后使用方法/函数创建普通类“Bmwcar1”,然后在段落标签内创建最终方法/函数。然后创建一个类“Tata1”来扩展“Bmwcar1”,该类具有正常的函数/方法“display()”,但在 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”类。然后使用两个变量创建普通函数“show1()”。其中变量的总和将存储在 $sum1 变量中。然后 echo 函数用于打印变量值总和。然后创建“B1”类来扩展“A1”类。在“B1”类中,变量的乘法完成并保存在 $multi1 变量中。使用回显功能打印乘法结果,但在这里我们用普通类“B1”扩展最终类“A1”。在这里我们扩展了 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”,然后创建了一个类“D1”来扩展类“C1”以使用“C1”参数。因此,类“D1”将继承“C1”类属性,并且还将包含“D1”类属性。到目前为止,一切都是正确的。然后创建一个类“A1”,其中包含最终函数/方法,其中包含“x1”、“y1”变量,用于计算变量之和。创建“B1”类后,将扩展“A1”类。但最终的类、方法是不可扩展的。如果尝试,将会发生致命错误。
代码:
<?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 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 Class 的所有公共 API 都是接口的一部分。它有助于封装。最终的类/方法将防止该类/方法覆盖子类/方法。 PHP 最终类将防止利用。尽管最终类无法扩展,但这些最终类在某些条件下是可以扩展的。这就像 Final 类可以成为或可以成为子类,但不能成为超类。
PHP Final 关键字甚至可以放置在访问说明符之前或之后。 PHP 最终方法也不应该有特定的返回类型和方法名称。
以上是PHP 期末班的详细内容。更多信息请关注PHP中文网其他相关文章!