PHP继承
这时一篇迟来的更新,因为它应该在前两天就被更新了,但是由于我英语四级没过!没过!没过!导致我心情低落,所以就玩了几天的游戏,哦不,进行了几天反思,痛定思痛 痛何如哉!
以下都是我个人的理解,有错的地方还望不吝赐教。
为什么需要继承?
继承就是 一个子类通过extends父类把父类的属性和方法继承下来。
假设现在现在需要写两个类,小学生类和高中生类,小学生会说话,走路,考试,高中生也会说话走路,考试,那么如果你写两遍说话,走路,考试,那么就会显得臃肿,管理起来也会麻烦很多,如果定义一个类叫做学生类包含说话,走路,考试,然后让小学生类和高中生类来继承这个学生类就会显得好很多,比如这样。
<?phpclass 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();?>
输出:
说话走路小学生考试说话走路高中生考试
这样代码管理起来就会好很多。
假设现在小学生要学习一个新的技能吃东西,我现在这样写。
<?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中是不能这样实现多继承的,如果想要实现多继承可以这么写:
<?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();?>
输出:
说话走路小学生考试吃东西
先用一个skill类继承student类,然后再用pupil类继承skill类,这样就相当于pupil类继承了student类和skill类。
PHP继承
原文地址:https://www.cnblogs.com/Timesi/p/9536422.html