Php 什么是OOPS中的函数重载和重写,请用外行术语解释
事实上,我对OOPS的概念还不熟悉,很难理解,我也在某个地方读到“我们在PHP中没有重载”。我正在学习这个示例,但它没有让我明白Php 什么是OOPS中的函数重载和重写,请用外行术语解释,php,oop,Php,Oop,事实上,我对OOPS的概念还不熟悉,很难理解,我也在某个地方读到“我们在PHP中没有重载”。我正在学习这个示例,但它没有让我明白 <?php class Toys{ private $str; public function __set($name,$value){ $this->str[$name] = $value; } public function __get($name){ echo "Overloaded
<?php
class Toys{
private $str;
public function __set($name,$value){
$this->str[$name] = $value;
}
public function __get($name){
echo "Overloaded Property name = " . $this->str[$name] . "<br/>";
}
public function __isset($name){
if(isset($this->str[$name])){
echo "Property \$$name is set.<br/>";
} else {
echo "Property \$$name is not set.<br/>";
}
}
public function __unset($name){
unset($this->str[$name]);
echo "\$$name is unset <br/>";
}
}
$objToys = new Toys;
/* setters and getters on dynamic properties */
$objToys->overloaded_property = "new";
echo $objToys->overloaded_property . "\n\n";
/*Operations with dynamic properties values*/
isset($objToys->overloaded_property);
unset($objToys->overloaded_property);
isset($objToys->overloaded_property);
?>
该参数是一个对象,因此您可以向该对象添加值。因此,您不需要重载,因为您可以传递任意数量的值。重载允许您使用相同的名称编写函数,但参数类型不同。编译器根据参数的类型选择正确的函数作为编译时
PHP没有它,因为它没有静态类型(在编译时,类型是未知的)
重写只存在于OO中。重写是指在父类已经定义的类中定义方法。因此,您的类“重写”了已由父类定义的方法。
简单解释
方法重写是指超类或接口中定义的方法由其子类之一重新定义,从而修改/替换超类提供的行为。调用一个或另一个实现的决定是在运行时动态做出的,这取决于调用操作的对象。请注意,重写时方法的签名保持不变
方法重载与多态性无关。它指的是定义不同形式的方法(通常通过接收不同的参数编号或类型)。它可以看作是静态多态性。调用一个或另一个实现的决定是在编码时做出的。注意,在这种情况下,方法的签名必须更改 本例中没有重载。对于基础知识,您是正确的。我不理解没有评论的否决票。。但首先,方法接受一个参数(执行),但它是由一个参数(定义)定义的。参数是参数给定的值。不要混淆两者。