这里有几个片段:
重写构造方法有一个额外的参数。
class Cat { function __construct() {} } class Lion extends Cat { function __construct($param) {} }
覆盖(常规)方法有一个额外的参数。
class Cat { function doSomething() {} } class Lion extends Cat { function doSomething($param) {} }
第一个会起作用,而第二个会抛出Declaration of Lion::doSomething() should be compatible with that of Cat::doSomething()
.
为什么对构造方法有特殊的态度?