Blogger Information
Blog 100
fans 8
comment 2
visits 150684
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
扩展父类属性并重载父类方法--2018年5月4日23时10分发布(5月3日作业)
lilove的博客
Original
786 people have browsed it

主题:

写一个父类与子类,在子类中扩展父类的属性,并重载父类的方法。

执行结果:

QQ截图20180504225612.png

父类代码(Car.php):

<?php

/*
 * 基类/父类(汽车)
 */
class Car {
    //public(公共),private(私有),protected(受保护)
    protected $cnum;
    protected $color;
    protected $style;
    
    //构造方法
    public function __construct($cnum, $color, $style) {
        $this->cnum = $cnum;
        $this->color = $color;
        $this->style = $style;
    }
    
    //一般方法
    public function drive() {
        return '开车';
    }
}

运行实例 »

点击 "运行实例" 按钮查看在线实例

子类代码(SmallCar.php):

<?php

/*
 * SmallCar:小车类
 * 子类/派生类
 */
class SmallCar extends Car {
    //创建查询器,访问受保护属性
    public function __get($name)
    {
        return $this->$name;
    }
    
    //扩展父类,增加功能,属性都为私有(private)
    private $skylight = false;  //天窗
    private $turbo = false;  //涡轮增压
    
    //用构造器构造方法
    public function __construct($cnum, $color, $style, $skylight, $turbo) {
        //初始化属性
        //$this->num = $cnum;
        //$this->color = $color;
        //$this->style = $style;
        //继承方式初始化属性
        parent::__construct($cnum, $color, $style);
        
        //子类中新增的属性不能使用继承方式初始化
        $this->skylight= ($skylight) ? '有' : '无';
        $this->turbo= ($turbo) ? '有' : '无';
    }
    
    //增加小车新功能
    public function play() {
        return '媒体功能';
    }
    
    public function fly() {
        //继承父类方法
        return parent::drive(). '飞翔';
    }
}

运行实例 »

点击 "运行实例" 按钮查看在线实例

测试代码(homework.php):

<?php

/* 
 * 类的继承与方法重载
 */

//使用自动加载器加载类(加载父类,子类自动继承)
spl_autoload_register(function($ClassName) {
    require './class/'. $ClassName. '.php';
});

//实例化对象
$smallCar = new SmallCar('鄂A88888', '白色', '法拉利', true, false);

//父类中的属性
echo '车牌号码:'. $smallCar->cnum. '<br>';
echo '车辆颜色:'. $smallCar->color. '<br>';
echo '车牌型号:'. $smallCar->style. '<br>';

//子类中新增的属性
echo '天窗:'. $smallCar->skylight. '<br>';
echo '涡轮增压:'. $smallCar->turbo. '<br>';

//子类中定义的方法
echo '功能:'. $smallCar->play(). '<br>';
echo '特点:'. $smallCar->fly(). '<br>';

运行实例 »

点击 "运行实例" 按钮查看在线实例

总结:

使用自动加载器加载类(加载父类,子类自动继承):spl_autoload_register()。

子类继承使用extends关键字,可以直接使用继承方式parent::__construct()方式初始化,子类新增的属性不能使用继承方式初始化,重载父类方法使用parent::


Correction status:qualified

Teacher's comments:
Statement of this Website
The copyright of this blog article belongs to the blogger. Please specify the address when reprinting! If there is any infringement or violation of the law, please contact admin@php.cn Report processing!
All comments Speak rationally on civilized internet, please comply with News Comment Service Agreement
0 comments
Author's latest blog post