php怎么继承父类方法

  介绍

这篇文章主要介绍php怎么继承父类方法,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!

php继承父类方法:使学生用类继承人类,代码为【类学生扩展Person{私人学校美元;函数__construct ($ name=啊? $性=澳小皚】。

<强> php继承父类方法:

在php中不能定义重名的函数,也包括不能再同一个类中定义重名的方法,所以也就没有方法重载。单在子类中可以定义和父类重名的方法,因为父类的方法已经在子类中存在,这样在子类中就可以把从父类中继承过来的方法重写。

子类中重载父类的方法就是在子类中覆盖从父类中继承过来的方法,父类中的方法被子类继承过来不就可以直接使用吗?为什么还要重载呢?因为有一些情况我们必须要覆盖的,例如,有一个“鸟”类,在这个类中定义了鸟的通用方法”飞翔”。将“鸵鸟”类作为它的子类,就会将“飞翔”的方法继承过来,但只要一调用“鸵鸟”类中的这个“飞翔”的方法,鸵鸟就会飞走。虽然鸵鸟是不会飞的,但其他特性都具有“鸟”类的特性,所以在声明“鸵鸟”类时还是可以继承“鸟”类的,但必须在“鸵鸟”类中将“鸟”类中继承过来的“飞翔”方法改写,就需要在子类中重载父类中的方法。

在下面的例子中,声明的Person类中有一个“说”话方法,学生类继承人类后可以直接使用“说”话方法。但人类中的“说”话方法只能说出它自己的成员属性,而学生类对人类进行了扩展,多添加了几个新的成员属性。代码如下所示:

& lt; ? php   类人{   保护美元名称;   保护美元性;   保护美元工资;   函数__construct ($ name=啊? $性=澳小?年龄=1美元){   $ this→名称=$名称;   这→美元=$性;=$ $ this→年龄年龄;   }//在人类中声明一个通用的说话方法,介绍一下自己   函数表示(){   回应“我的名字:“这→美元。名字!”,性别:“。$ this→性!”,年龄:“。干净自己的美元这个→时代。你们br>“;   }   }//声明一个学生类,使用扩展关键字扩展(继承)类的人   类学生扩展Person {   私人学校美元;//在学生类中声明一个所在学校学校的成员属性//覆盖父类中的构造方法,在参数列表中添加一个学校属性,用来创建对象并初始化成员属性   函数__construct ($ name=啊? $性=澳小?年龄=1美元,美元学校=啊?{   $ this→名称=$名称;   这→美元=$性;=$ $ this→年龄年龄;=$ $ this→学校学校;   }   函数的研究(){   echo $ this→干净自己的名字正在“。$ this→干净自己的学校学习& lt; br>“;   }//定义一个和父类中同名的方法,将父类中的说话方法覆盖并重写,多说出所在的学校名称   函数表示(){   回应“我的名字:“。$ this→名字!”,性别:“。$ this→性!”,年龄:“。$ this→干净自己的年龄,在“。$ this→干净自己的学校学校上学& lt; br>“;   }   }   学生美元=新学生(“张三“,“男”,20日“edu");//创建一个学生对象,并传给一个学校名称参数   学生→美元说();//调用学生类中覆盖父类的说话方法   ?在

改程序运行后输出的结果为:

我的名字叫:张三,性别:男,我的年龄是:20日在. .学校上学

在php中,提供了在子类重载的方法中调用父类被覆盖方法的功能。这样就可以在子类重写的方法中,继续使用从父类继承过来并被覆盖的方法,然后再按要求多添加一些新功能。调用的格式是使用“父:方法名”在子类的重载方法中调用父类中被覆盖的方法。将上例中的代码修改一下,在子类重写的构造方法中使用“父::__construct()”调用父类中被覆盖的构造方法,再多添加一条对子类中新扩展的成员属性初始化的代码。在子类中重写的说()方法中使用“父:说()”调用父类中被覆盖的说()方法,再添加上输出子类成员属性的功能。

代码如下所示:

& lt; php ?   类人{   保护美元名称;   保护美元性;   保护美元工资;   函数__construct ($ name=啊? $性=澳小?年龄=1美元){   $ this→名称=$名称;   这→美元=$性;=$ $ this→年龄年龄;   }//在人类中声明一个通用的说话方法,介绍一下自己   函数表示(){   回应“我的名字:“这→美元。名字!”,性别:“。$ this→性!”,年龄:“。干净自己的美元这个→时代。你们br>“;   }   }//声明一个学生类,使用扩展关键字扩展(继承)类的人   类学生扩展Person {   私人学校美元;//在学生类中声明一个所在学校学校的成员属性//覆盖父类中的构造方法,在参数列表中添加一个学校属性,用来创建对象并初始化成员属性   函数__construct ($ name=啊? $性=澳小?年龄=1美元,美元学校=啊?{//调用父类中被覆盖的构造方法,为从父类中集成过来额出行赋初值   父:__construct(姓名、性别、美元时代美元);=$ $ this→学校学校;   }   函数的研究(){   echo $ this→干净自己的名字正在“。$ this→干净自己的学校学习& lt; br>“;   }//定义一个和父类中同名的方法,将父类中的说话方法覆盖并重写,多说出所在的学校名称   函数表示(){   父:说();//调用父类中被本方法覆盖掉的方法   回声,在“。$ this→干净自己的学校学校上学& lt; br>“;   }   }   学生美元=新学生(“张三“,“男”,20日“edu");//创建一个学生对象,并传给一个学校名称参数   学生→美元说();//调用学生类中覆盖父类的说话方法   祝辞;

php怎么继承父类方法