java和php在继承中构造函数得简单对比

今天简单对比一下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();