菜单

PHP继承

2019年2月16日 - Php

PHP继承

那是一篇迟来的更新,因为它应有在前两日就被更新了,不过由于自己希腊语四级没过!没过!没过!导致小编心思低沉,所以就玩了几天的玩耍,哦不,举行了几天反思,痛定思痛
痛何如哉!

以下都以自个儿个人的明白,有错的地点还望不吝赐教。
何以必要后续?
持续就是 三个子类通过extends父类把父类的个性和方法继承下来。
如若以往近年来亟待写三个类,小学生类和高中生类,小学生会说话,走路,考试,高中生也会讲话走路,考试,那么只要您写一回说话,走路,考试,那么就会彰显臃肿,管理起来也会麻烦很多,假如定义1个类叫做学生类富含说话,走路,考试,然后让小学生类和高中生类来继续那几个学生类就会显示好过多,比如那样。

<?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();
?>

输出:

说话走路小学生考试
说话走路高中生考试

那样代码管理起来就会好过多。
只要以往小学生要读书1个新的技术吃东西,作者今日这么写。

<?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();
?>

输出:

说话走路小学生考试吃东西

先用2个skill类继承student类,然后再用pupil类继承skill类,这样就一定于pupil类继承了student类和skill类。

情势重写
只要要完结的七个类有同步性子,那么就足以将以此合伙的性状抽象出三个父类。
比如,有小学生类和中学生类,那样的多个类,他们都以学生,那么就足以抽象出八个学生类,学生都会考试,那么就把考试那些主意写在学童那一个类里面。
那么难题不怕,小学生是小学生的考试,中学生是中学生的试验,作者不容许都输出考试,那里就用到了艺术重写。
在子类中定义3个与父类一样的主意,那样实践的时候,父类中的方法就会被遮住,从而输出的唯有子类中定义的章程。
举例:

<?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();
?>

输出:

小学生考试
中学生考试
//定义一个超类
//public 和 protectd属性和方法可以继承,private不可继承。
class A{
    public $a =0;
    private $b = 1;
    protected $c = 2;
    function __construct()
    {
        //构造函数
    }
    function __destruct()
    {
        //析构函数
        // TODO: Implement __destruct() method.
    }
}
class B extends A{//extend继承A类
    public $d = 0;
}
$B = new B();
echo $B->a;

 

相关文章

发表评论

电子邮件地址不会被公开。 必填项已用*标注

网站地图xml地图