博主信息
博文 34
粉丝 0
评论 0
访问量 27717
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
第13章 对象继承与成员访问-2019年09月30日20时00分
Tommy-黄天浩的博客
原创
701人浏览过

一、子类的作用

  1. 代码复用

实例

<?php
namespace _001;
//父类
class Myclass{
    public $product;
    public $price;

    public function __construct($product,$price)
    {
        $this->product=$product;
        $this->price=$price;
    }

    public function getinfo()
    {
        return '商品名称:'.$this->product.'<br>'.'商品价格:'.$this->price;
    }
}
//子类
class Sub1 extends Myclass{

}
$obj=new Sub1('笔记本电脑',8888);
echo $obj->getinfo();

运行实例 »

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

运行结果如图所示:

QQ截图20191006235029.png

2.功能扩展

实例

<?php
namespace _001;
//父类
class Myclass{
    public $product;
    public $price;

    public function __construct($product,$price)
    {
        $this->product=$product;
        $this->price=$price;
    }

    public function getinfo()
    {
        return '商品名称:'.$this->product.'<br>'.'商品价格:'.$this->price;
    }
}
//子类
class Sub1 extends Myclass{
//在这里我们可以为MYclass里面增加一个属性数量
    public $num;

    public function __construct($product,$price,$num)
    {
        parent::__construct($product,$price);
        $this->num=$num;
    }

    public function total(){
        return round($this->price*$this->num,3);
    }
}
$obj=new Sub1('笔记本电脑',8888,7);
echo $obj->getinfo().'<br>'.'商品数量:'.$obj->num.'<br>'.'商品总价格:'.$obj->total();

运行实例 »

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

运行结果如下图所示:

QQ截图20191007000422.png

3.方法重写

实例

<?php
namespace _001;
//父类
class Myclass{
    public $product;
    public $price;

    public function __construct($product,$price)
    {
        $this->product=$product;
        $this->price=$price;
    }

    public function getinfo()
    {
        return '商品名称:'.$this->product.'<br>'.'商品价格:'.$this->price;
    }
}
//子类
class Sub1 extends Myclass{
//在这里我们可以为MYclass里面增加一个属性数量
    public $num;

    public function __construct($product,$price,$num)
    {
        parent::__construct($product,$price);
        $this->num=$num;
    }

    public function total(){
        return round($this->price*$this->num,3);;
    }
}

class Sub2 extends Sub1{
    public function total(){
        //买满10000元减500元,买满20000元减1200元,买满30000元直接打7折,小于10000元不优惠。
        $total=parent::total();

        //设置条件判断
        switch(true){
            case($total>=10000 && $total<30000):
            $manjian=500;
            break;

            case($total>=30000 && $total<40000):
            $manjian=1200;
            break;

            case($total>=40000):
            $zk=0.7;
            break;

            default:
            $yj=0;
        }

        //优惠后的价格
        if(isset($manjian)){
            $newprice=round(($total-$manjian),0);
            $newprice='商品总原价:'.$total.'<br>'.'商品优惠价:'.$newprice.'<br>'.'优惠了'.$manjian.'元';
        }

        if(isset($zk)){
            $newprice=round($total*$zk,0);
            $newprice='商品总原价:'.$total.'<br>'.'商品优惠价:'.$newprice.'<br>'.'打了7折';
        }
          if(isset($yj)){
                $newprice=round($total,0);
                $newprice='商品总原价:'.$total.'<br>'.'商品优惠价:'.$newprice.'<br>'.'买更多享受优惠吧!';
                }
                
        return $newprice;
    }
}
$obj=new Sub2('笔记本电脑',8888,7);
echo $obj->getinfo().'<br>'.'商品数量:'.$obj->num.'<br>'.$obj->total();

运行实例 »

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

运行后效果如下图所示:

QQ截图20191006235029.png

QQ截图20191006235029.png

QQ截图20191006235029.png

QQ截图20191006235029.png


实例

<?php
namespace _001;
// 访问控制符: public
// public : 类中,类外均可访问, 子类中也可以访问
// protected: 类中,类外不可访问, 但是子类中可以访问
// private: 只允许在类中, 类外, 子类中不可访问

class Demo{
    public $name;
    protected $department;
    private $salary;

    public function __construct($name,$department,$salary){
        $this->name=$name;
        $this->department=$department;
        $this->salary=$salary;
    }

    //权限控制,只有管理员和财务组的可以看到员工的工资
    public function getsalary(){
        return $this->department === '管理员'?$this->salary:'无权查看工资';
    }
}

$obj=new Demo('张三','非管理员','3000');
echo $obj->getsalary();

运行实例 »

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

QQ截图20191006235029.png

总结:

子类的三个功能:

  1. 代码复用 2.功能扩展 3.方法重写

限制符的区别:

public : 类中,类外均可访问, 子类中也可以访问

protected: 类中,类外不可访问, 但是子类中可以访问

private: 只允许在类中, 类外, 子类中不可访问

批改状态:合格

老师批语:总结的很好, php中的访问限制符, 实际上就是类中成员的作用域, 和Java中很类似
本博文版权归博主所有,转载请注明地址!如有侵权、违法,请联系admin@php.cn举报处理!
全部评论 文明上网理性发言,请遵守新闻评论服务协议
0条评论
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号

  • 登录PHP中文网,和优秀的人一起学习!
    全站2000+教程免费学