更改继承的变量名是否仍被视为覆盖?
Is changing inherited variable name is still considred as override?
如上所问,我有一个函数,在基 class 中有一个输入参数。
是否在派生 class 中覆盖它,但更改变量名称仍被视为 override 而不是 overload ?
我知道 Java 之类的语言就是这种情况,但是 php 呢?
abstract public foo($a);
--> class A1
public foo($b){}
--> class B1(B1 扩展 A1)
相同的问题,但情况略有不同:
abstract public foo (Vehicle $car)
--> class A2
public foo (Mercedes $myCar)
--> class B2(B2 扩展 A2)和(class 梅赛德斯扩展 class 车辆)
不会产生任何错误,它工作正常。但是不会有两个不同的 foo 方法,只有一个
摘要class一个{
抽象 public 函数 foo($a);
}
class B 扩展 A {
public 函数 foo($b) {}
}
会产生这个:
PHP Fatal error: Declaration of B::foo() must be compatible with
A::foo(Vehicle $a) in /home/test.php on line 11
class Vehicle {}
class Car extends Vehicle {}
abstract class A {
abstract public function foo(Vehicle $a);
}
class B extends A {
public function foo(Car $b) {}
}
PHP 中没有重载,只是覆盖
如上所问,我有一个函数,在基 class 中有一个输入参数。
是否在派生 class 中覆盖它,但更改变量名称仍被视为 override 而不是 overload ?
我知道 Java 之类的语言就是这种情况,但是 php 呢?abstract public foo($a);
--> class A1
public foo($b){}
--> class B1(B1 扩展 A1)相同的问题,但情况略有不同:
abstract public foo (Vehicle $car)
--> class A2
public foo (Mercedes $myCar)
--> class B2(B2 扩展 A2)和(class 梅赛德斯扩展 class 车辆)
不会产生任何错误,它工作正常。但是不会有两个不同的 foo 方法,只有一个
摘要class一个{ 抽象 public 函数 foo($a); }
class B 扩展 A { public 函数 foo($b) {} }
会产生这个:
PHP Fatal error: Declaration of B::foo() must be compatible with A::foo(Vehicle $a) in /home/test.php on line 11
class Vehicle {}
class Car extends Vehicle {}
abstract class A {
abstract public function foo(Vehicle $a);
}
class B extends A {
public function foo(Car $b) {}
}
PHP 中没有重载,只是覆盖