我们人类都是不断地继承祖先留下的东西并在此基础上不断进化才能发展到现在如此悻悻向荣的社会。
编程也一样,由于有了继承,我们才能节省了大量编程的时间和代价。
比如程序猿和修车师傅,同样是人,同样要吃喝睡,同样有名字,身高等属性但是他们职业上又有根本的区别,程序猿会编程,而修车师傅会修车。由于他们技能上有所不同,我们必须要生成两个类,但是每次都要把他们相同的属性和技能都写进不同的类中,这样编写代码会让写的人和看的人感到厌烦。这时候我们就要用到继承了。
于是乎编写了一下代码:
class Human{
public $name;
public $height;
public function eat(){
echo $this->name." is eating <br>";
}
}
class Programmer extends Human{
public $skill;
public function __construct($name,$height,$skill){
$this->name = $name;
$this->height = $height;
$this->skill = $skill;
}
public function writecode(){
echo $this->name." is using ".$this->skill." to write codes <br>";
}
}
class Mechanic extends Human{
public $car;
public function __construct($name,$height,$car){
$this->name = $name;
$this->height = $height;
$this->car = $car;
}
public function repaire(){
echo $this->name." is repairing ".$this->car." <br>";
}
}
$kitt = new Programmer("kitt","1.78m","php");
$k = new Mechanic("k","1.75m","BMW");
$kitt->writecode();
$kitt->eat();
$k->repaire();
$k->eat();
输出结果如下:
kitt is using php to write codes
kitt is eating
k is repairing BMW
k is eating
用了继承之后,我们就不用在子类中写name height属性和eat()方法了。
下面总结一下继承的好处:
1、父类里面定义的类成员(包括属性和方法)可以不用在子类中重复定义,节约了编程的时 。比如:人的吃这个方法如果在父类中定义了,那么程序员和修车师傅这两个子类就不需要实现吃这个方法了,就好像天生就有这个功能一样。
2、同一个父类的子类拥有父类定义的类成员,因此外部代码调用他们的时候可以一视同仁。
3、子类可以修改和调整父类定义员。
类成员我们称为重写(overwrite)。
一旦子类修改了,就按找子类修改之后的功能执行。