博客列表 >503-PHP类之父子类

503-PHP类之父子类

小威的博客
小威的博客原创
2018年05月04日 20:00:11908浏览
  • 父子类重载效果图:

0503.png

  • 父子类重载父类源代码:LcdTv.php


实例

/**
创建液晶显示器类
 */

class LcdTv
{
    protected  $brand;//品牌
    protected  $model;//型号
    protected  $size;//尺寸
    protected  $price;//价格

    //构造方法
    public function __construct($brand,$model,$size,$price)
    {
        $this->brand = $brand;
        $this->model = $model;
        $this->size = $size;
        $this->price = $price;
    }

    public function call()
    {
        return '看电影';
    }
}

运行实例 »

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

  • 父子类重载子类源代码:LedTv.php

实例

<?php

class LedTv extends LcdTv
{
    //创建查询器,实现了外部访问
    public function __get($name)
    {
        return $this->$name;
    }

    //1.对父类属性进行扩展,增加新功能,如果不在子类中使用,推荐设置为private
    private $wifi = false; //是否有无线功能
    private $surface = false; //是否曲面屏

    //必须使用构造方法对使用当前新属性生效
    public function __construct($brand, $model, $size, $price, $wifi, $surface)
    {
        //调用父类构造器初始化类属性
        parent::__construct($brand, $model, $size, $price);

        $this->wifi = $wifi;
        $this->surface = $surface;
    }

    //2.增加新的方法,扩展父类的功能
    public function game()
    {
        return '玩游戏';
    }

    //3.将父类方法进行重写,就是功能重载,必须使用与父类一样的方法名:call()
    public function call()
    {
        //此时,访问call()将会输出子类定义的功能
        //但更多的时候,我们并不会放弃原有功能,而只是在它上面进行追回而已
        //那么,如何在子类中引用父类中的方法呢? 使用关键字: parent,后面跟上双冒号::
        return parent::call().',同时还能看网络电视,听音乐,看大片';
    }
}

运行实例 »

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

  • 父子类重载测试源代码:index.php

实例

<?php
/**
测试效果
 */
//使用自动加载器来加载类:
spl_autoload_register(function($className){
    // require './class'.$className.'.php';
    $path = __DIR__.'/class/'.$className.'.php';
      if (is_file($path) && file_exists($path)) {
          require $path;
      }
});
$ledtv = new LedTv('小米','小米电视4S',55,3999,true,true);

echo '品牌:'.$ledtv->brand.'<br>';
echo '型号:'.$ledtv->model.'<br>';
echo '尺寸:'.$ledtv->size.'<br>';
echo '价格:'.$ledtv->price.'<br>';

//下面输出二个在子类中扩展的属性

echo '曲面屏:'.($ledtv->surface?'支持':'不支持').'<br>';
echo '无线上网:'.($ledtv->wifi?'支持':'不支持').'<br>';

echo $ledtv->call().'<br>'; //call()是父类中的方法
echo '最大的特色功能是:'.$ledtv->game().'。<br>'; //game()是子类中的方法

echo '<hr color="red">';

$ledtv = new LedTv('乐视','乐视超级电视LV6',65,9999,true,true);

echo '品牌:'.$ledtv->brand.'<br>';
echo '型号:'.$ledtv->model.'<br>';
echo '尺寸:'.$ledtv->size.'<br>';
echo '价格:'.$ledtv->price.'<br>';

//下面输出二个在子类中扩展的属性

echo '曲面屏:'.($ledtv->surface?'支持':'不支持').'<br>';
echo '无线上网:'.($ledtv->wifi?'支持':'不支持').'<br>';

echo $ledtv->call().'<br>'; //call()是父类中的方法
echo '最大的特色功能是:'.$ledtv->game().'。<br>'; //game()是子类中的方法

运行实例 »

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


声明:本文内容转载自脚本之家,由网友自发贡献,版权归原作者所有,如您发现涉嫌抄袭侵权,请联系admin@php.cn 核实处理。
全部评论
文明上网理性发言,请遵守新闻评论服务协议