这是一篇迟来的更新,由于它应该在前两天就被更新了,可是因为我英语四级没过!没过!没过!致使我心情低落,因此就玩了几天的游戏,哦不,进行了几天反思,痛定思痛 痛何如哉!php
如下都是我我的的理解,有错的地方还望不吝赐教。
为何须要继承?
继承就是 一个子类经过extends父类把父类的属性和方法继承下来。
假设如今如今须要写两个类,小学生类和高中生类,小学生会说话,走路,考试,高中生也会说话走路,考试,那么若是你写两遍说话,走路,考试,那么就会显得臃肿,管理起来也会麻烦不少,若是定义一个类叫作学生类包含说话,走路,考试,而后让小学生类和高中生类来继承这个学生类就会显得好不少,好比这样。学习
<?php class student{ function speak(){ echo '说话'; } function walk(){ echo '走路'; } function test(){ echo '考试'; } } class pupil extends student{ function test(){ echo '小学生考试'; } } class senior extends student{ function test(){ echo '高中生考试'; } } $pupil=new pupil(); $pupil->speak(); $pupil->walk(); $pupil->test(); echo '<br />'; $senior=new senior(); $senior->speak(); $senior->walk(); $senior->test(); ?>
输出:code
说话走路小学生考试 说话走路高中生考试
这样代码管理起来就会好不少。
假设如今小学生要学习一个新的技能吃东西,我如今这样写。继承
<?php class student{ function speak(){ echo '说话'; } function walk(){ echo '走路'; } function test(){ echo '考试'; } } class skill{ function eat(){ echo '吃东西'; } } class pupil extends student,skill{ function test(){ echo '小学生考试'; } } $pupil=new pupil(); $pupil->speak(); $pupil->walk(); $pupil->test(); $pupil->eat(); ?>
若是这样写,那么就会报错:游戏
Fatal error: Class 'studentskill' not found in D:\xampp\htdocs\1.php on line 18
由于php中是不能这样实现多继承的,若是想要实现多继承能够这么写:io
<?php class student{ function speak(){ echo '说话'; } function walk(){ echo '走路'; } function test(){ echo '考试'; } } class skill extends student{ function eat(){ echo '吃东西'; } } class pupil extends skill{ function test(){ echo '小学生考试'; } } $pupil=new pupil(); $pupil->speak(); $pupil->walk(); $pupil->test(); $pupil->eat(); ?>
输出:function
说话走路小学生考试吃东西
先用一个skill类继承student类,而后再用pupil类继承skill类,这样就至关于pupil类继承了student类和skill类。class
方法重写
若是要实现的两个类有共同特征,那么就能够将这个共同的特征抽象出一个父类。
好比,有小学生类和中学生类,这样的两个类,他们都是学生,那么就能够抽象出一个学生类,学生都会考试,那么就把考试这个方法写在学生这个类里面。
那么问题就是,小学生是小学生的考试,中学生是中学生的考试,我不可能都输出考试,这里就用到了方法重写。
在子类中定义一个与父类同样的方法,这样执行的时候,父类中的方法就会被覆盖,从而输出的只有子类中定义的方法。
举例:test
<?php class student{ function test(){ echo '考试'; } } class pupil extends student{ function test(){ echo '小学生考试'; } } class senior extends student{ function test(){ echo '中学生考试'; } } $pupil=new pupil(); $pupil->test(); echo '<br />'; $senior=new senior(); $senior->test(); ?>
输出:nio
小学生考试 中学生考试