在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
首先明确一点:PHP重载是用在面向对象的类当中,而不支持函数重载。 这点与C++不一样,在C++当中,重载可以用于面向过程和面向对象,而且方法也不一样。 在C++中,重载适用于当函数名相同时,函数所需的参数个数不相同或者参数个数相同,而参数的类型不同的情况, 在程序编译时,自动根据已提供的参数个数及类型选择相应的函数进行操作,比如下面一段C++代码: #include<iostream> using namespace std; class Box{ private: int l,w; public: void set(){ l=0; w=0; } //此处重载的是set()函数 void set(int ll){ l=ll; w=0; } void set(int ll,int ww){ l=ll; w=ww; } void display(){ cout<<"L="<<l<<";"; cout<<"W="<<w<<endl; } }; int main() { Box box_1,box_2,box_3; box_1.set(); cout<<"box_1:\n"; box_1.display(); box_2.set(5); cout<<"box_2:\n"; box_2.display(); box_3.set(7,9); cout<<"box_3:\n"; box_3.display(); } 输出结果是: box_1: L=0;w=0 box_2: L=5;W=0 box_3: L=7;W=9 从结果当中可以看出,在参数个数不同的时候,执行了不同的函数。 回到正题,PHP的重载在我看来其实就是一种覆盖(或者修改),即在父类的基础上,进行修改,赋予子类一个新的功能,该功能是父类当中没有的。C++当中亦可如此,只不过在C++中不叫重载罢了。 参考一下代码: <?php class Student{ public function display(){ echo "I am a student! <br>"; echo "I haven't graduate <br>"; } } class Graduate extends Student{ public function display(){ //要想实现重载,则子类当中需要重载的函数名必须与父类当中此函数的函数名相同 //此处以display()为例。 echo "I was a student before! <br>"; echo "but I have graduated! <br>"; } } $stu=new Student(); $stu->display(); $gra=new Graduate(); $gra->display(); ?>
输出结果: I am a student! |
2022-08-15
2022-08-17
2022-11-06
2022-08-17
2022-07-22
请发表评论