博客列表 >实例演示子类的三个应用场景,及类成员的三种访问限制符的使用场景—2019年9月30日

实例演示子类的三个应用场景,及类成员的三种访问限制符的使用场景—2019年9月30日

L先生的博客
L先生的博客原创
2019年10月13日 15:13:02584浏览

子类的三个应用场景

1.代码复用

2.功能扩展

3.方法重写

实例

<?php
//类的继承: 代码复用的重要手段
namespace _0930;
class Demo3
{
    // 属性(变量)
    public $product;
    public $price;
    // 构造方法
    public function __construct($product, $price)
    {
        $this->product = $product;
        $this->price = $price;
    }
    // 方法(函数)
    public function getInfo()
    {
        return '商品名称: ' . $this->product.', 商品价格: ' . $this->price;
    }
}
// 子类
// 1. 代码复用
class Sub1 extends Demo3
{
    // ...
}
$sub1 = new Sub1('iPhone 11', 9800);
echo $sub1->getInfo() . '<hr>';
// 子类
// 2. 功能扩展
class Sub2 extends Demo3
{
    // 增加一个属性
    public $num; // 数量
    // 构造方法
    public function __construct($product, $price, $num)
    {
//        $this->product = $product;
//        $this->price = $price;
//        继承父类
        parent::__construct($product, $price);
        $this->num = $num;
    }
    // 子类中增加一个新方法: 计算总和
    public function total()
    {
        return round($this->price * $this->num, 3);
    }
}
$sub2 = new Sub2('电脑', 3980.1234, 13);
echo $sub2->product . '的总价是: '. $sub2->total(). '<hr>';
// 子类
// 3. 方法重写
class Sub3 extends Sub2
{
    // 重写total()
    public function total()
    {
        $total = parent::total();
//        设置折扣率
        switch (true)
        {
            case ($total > 20000 && $total < 40000):
                $discountRate = 0.88;
                break;
            case ($total >= 40000 && $total < 60000):
                $discountRate = 0.78;
                break;
            case ($total >= 60000):
                $discountRate = 0.68;
                break;
            default:
                // 小于或等于2000,不打折
                $discountRate = 1;
        }
        // 打折后的价格
        $discountPrice = round($total*$discountRate, 2);
        if ($discountRate < 1) {
            $discountPrice=$discountPrice . '元, <span style="color: red">('. $discountRate.'折)</span>';
        }
        // 返回折扣价
        return $discountPrice;
    }
}
//$sub3 = new Sub3('电脑', 3980, 13);
$sub3 = new Sub3('电脑', 3980, 33);
echo '折扣价是: ' . $sub3->total();

运行实例 »

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

类成员的三种访问限制符的使用场景



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