PHP继承

PHP继承

这是一篇迟来的更新,由于它应该在前两天就被更新了,可是因为我英语四级没过!没过!没过!致使我心情低落,因此就玩了几天的游戏,哦不,进行了几天反思,痛定思痛 痛何如哉!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

小学生考试
中学生考试
相关文章
相关标签/搜索