Rumah  >  Artikel  >  pembangunan bahagian belakang  >  PHP中函数覆盖和函数重载是什么

PHP中函数覆盖和函数重载是什么

藏色散人
藏色散人asal
2019-01-18 16:09:284227semak imbas

函数重载和覆盖(也叫重写)是PHP中的OOP(面向对象)特性。在函数重载中,多个函数可以具有相同的方法名但参数的数量或类型不同。但是在函数重写的情况下,多个函数将具有相同的方法名和参数数量。

PHP中函数覆盖和函数重载是什么

函数重载:函数重载包含相同的函数名称,该函数根据参数的数量和类型执行不同的任务。

例如,找到给定半径的某些形状的区域,如果给出高度和宽度,则应该返回圆的区域,然后应该给出矩形区域和其他区域。与其他OOP语言一样,函数重载不能通过本地方法完成。

在PHP中,函数重载是在魔术方法__call()的帮助下完成的。此函数采用函数名称和参数。

函数重载的示例:

<?php 
// 说明:PHP程序说明函数。
// PHP中的重载
//创建一个类型为shape的类
class shape { 
      
   // __call() 是一个魔术方法
   //函数名和参数
    function __call($name_of_function, $arguments) { 
              
        // 它将匹配函数名
        if($name_of_function == &#39;area&#39;) { 
              
            switch (count($arguments)) { 
                      
                // 如果只有一个参数
                //圆的面积
                case 1: 
                    return 3.14 * $arguments[0]; 
                          
                // 如果有两个参数,则面积为矩形;
                case 2: 
                    return $arguments[0]*$arguments[1]; 
            } 
        } 
    } 
} 
      
//声明Shape类型对象
$s = new Shape; 
      
echo($s->area(2)); 
echo "<br>"; 
      
// 调用矩形的area方法
echo ($s->area(4, 2)); 
?>

输出:

6.28
8

函数重写:函数重写与其他OOP编程语言相同。在函数重写中,父类和子类应具有相同的函数名和参数数量。它用于替换子类中的父方法。覆盖的目的是更改父类方法的行为。具有相同名称和相同参数的两个方法称为覆盖。

函数覆盖(重写)的示例:

<?php
//PHP程序实现
//函数覆盖
//这是父类
class P {

    // 父类函数demo
    function demo() {
        echo "Parent";
    }
}

// 这是子类
class C extends P {

    // 覆盖demo方法
    function demo() {
        echo "<br>Child";
    }
}


$p = new P;

$c= new C;

// 打印parent
$p->demo();

// 打印child
$c->demo();
?>

输出:

Parent
Child

本篇文章就是关于PHP中函数覆盖和函数重载的介绍,希望对需要的朋友有所帮助!

Atas ialah kandungan terperinci PHP中函数覆盖和函数重载是什么. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn