菜单

PHP继承

2018年11月18日 - 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();
?>

输出:

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

这般代码管理起就是见面哼广大。
设若现在小学生如果读书一个新的技能吃东西,我今天这般写。

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

输出:

小学生考试
中学生考试

     继承是PHP5面象对象程序设计的主要特点有,它是负建立一个初的派生类,从一个要多个先前概念之类中继承数据和函数,而且得更定义或加以进新数据以及
函数,从而确立了近似的层次或等。

   
 继承性是子类自动共享父类数据结构和章程的建制,这是看似中的一致种植涉。在概念跟贯彻一个近似的下,可
以在一个早就在的类的功底之上来进展,把此已是的类所定义的内容作友好之情节,并在几新的情。

     

     举例:

     比如您本早就生一个“人”这个近乎了,这个
类里面来一定量独成员属性“姓名及年”以及还有零星个成员方法“说话的不二法门与行的方式“,
如果现在程序需要一个学员的近乎, 因为生的啊是人,
所以学生啊有成员属性“姓名与年龄”以及成员方法“说话的法门以及走的章程“,这个时候你就是得让生类来继承人这个类似,
继承之后,学生类即见面拿全人类间的装有的性能都累过来,
就不要您重新失还声明一整个这些分子属性和道了,
因为生类中还有各地学校的性与上之点子,所以在你做的学习者类中有继续自人类中的属性与方之外在加上学生特有的”所当全校属性“和”学习的方
法“, 这样一个学童类就宣称完成了, 继函我们吧足以叫作“扩展”,
从上面我们就可以看出,学生类对全人类进行了扩大,
在人类里固有两个属性与少个主意的根基及添加一个性质与一个术扩展出来一个新的生类。

     

1.父类
2.子类
子类可以延续父类的一体
特点:单继承,一个子类只能发出一个父类,一个父类可以派生多个子类

class Ren
{
    public $name;

    function Say()
    {
        echo $this->name."正在讲话";
    }
}

class China extends Ren          //子类对父类的继承
{


}
$c = new China();
$c->Say();
var_dump($c);

 

结果:

图片 1

 

 但是拓展性:

class Ren
{
    public $name;

    function Say()
    {
        echo $this->name."正在讲话";
    }
}

class China extends Ren        
{
    function Run()                       //拓展父类
    {
        echo $this->name."正在跑步";
    }
}
$c = new China();
$c->Say();
$c->Run();

  

结果:

图片 2

 

 

 重写:override

class Ren
{
    public $name;

    function Say()
    {
        echo $this->name."正在讲话";
    }
}

class China extends Ren
{
    //子类对父类的方法进行重写
    function Say()
    {
        echo "你好";
    }

    function Run()                      //拓展
    {
        echo $this->name."正在跑步";
    }
}

class America extends Ren
{
    //子类对父类的方法进行重写
    function Say()
    {
        echo "hello";
    }
}

  

结果:

图片 3

 

连续和进行:

class Ren
{
    public $name;

    function Say()
    {
        echo $this->name."正在讲话";
    }
}

class China extends Ren
{
    //子类对父类的方法进行重写
    function Say()
    {
        parent::Say();                //两个冒号
        echo "你好";
    }
}
$c = new China();
$c->Say();

  

结果:

图片 4

 

相关文章

发表评论

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

网站地图xml地图