今天简单对比一下java和php的构造函数在继承中的不同。
Java中:
情况1:父类如果有无参数的构造函数,子类无论写没写构造函数,则会自动隐式调用父类构造
class Human{ Human(){ System.out.println("父类构造函数"); } } class Man extends Human{ Man(){ System.out.println("子类构造函数"); } public static void main(String[] args) { Man m=new Man(); } }
情况2:如果父类构造是有参数的,你则必须手动使用super关键字来调用,否则编译不通过
php中:
情况1:如果父类有构造函数,子类没有构造函数,子类则会自动调用父类构造。
情况2:如果父类有构造函数,子类也有构造函数,这个时候子类的构造函数则会覆盖父类构造,你必须使用parent关键字手动调用父类构造
<?php class Human{ public function __construct(){ echo '父类构造函数'; } } class Man extends Human{ public function __construct(){ parent::__construct(); echo '子类构造函数'; } } $stu=new Man();