内容简介: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();
?>
输出:
小学生考试 中学生考试
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网
猜你喜欢:- 028.Python面向对象继承(单继承,多继承,super,菱形继承)
- PHP类继承、接口继承关系概述
- 面向对象:理解 Python 类的单继承与多继承
- java入门第二季--继承--java中的继承初始化顺序
- 前端基本功(七):javascript中的继承(原型、原型链、继承的实现方式)
- 组合还是继承,这是一个问题?——由模式谈面向对象的原则之多用组合、少用继承
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
网站转换率优化之道
[美] Khalid Saleh、[美] Ayat Shukairy / 顾 毅 / 人民邮电出版社 / 2012-4 / 45.00元
内容简介: 怎样才能将访问者转化为顾客? 本书提供了一些切实可行的建议,比如如何说服访问者作出购买决定,如何避免用户因信息过量或导航繁琐而离开网站等。不论你是在设计或营销大型电子商务网站,还是在管理中小型在线业务,都可以从本书学会怎样使用市场营销原则、设计方法、可用性原则和分析数据来持续提升网站的转换率。 作者帮助过众多公司吸引在线顾客,有着丰富的实战经验,在书中细致讨论了从访问......一起来看看 《网站转换率优化之道》 这本书的介绍吧!