今天简单对比一下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关键字手动调用父类构造
class Human{
public function __construct(){
echo '父类构造函数';
}
}
class Man extends Human{
public function __construct(){
parent::__construct();
echo '子类构造函数';
}
}
$stu=new Man();
喜欢 (3)or分享 (0)