博客列表 >子类三个应用场景与类成员的三种方法修饰符_0930

子类三个应用场景与类成员的三种方法修饰符_0930

Jet的博客
Jet的博客原创
2019年10月08日 14:53:481060浏览

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

1 实例演示子类的三个应用场景(1、继承;2、扩展;3、重写方法)

实例

<?php
//实例演示子类的三个应用场景(1、继承;2、扩展;3、重写方法)
//定义一个类
class phone{
    //属性
    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 phone1 extends phone{}
//new出子类phone1对象
$phone1 = new phone1('HuaWei p30pro','99998');
//打印,调用getInfo()方法
echo $phone1->getInfo() . '<hr>';

//场景2:子类扩展父类功能
class phone2 extends phone{
    //添加一个公共属性
    public $num;

    //公共的构造方法
    public function __construct($product,$price,$num)
    {
        //直接调用父类构造方法
        parent::__construct($product,$price);
        $this->num  = $num;
    }

    //子类新增新方法
    public function total(){
        return round($this->price * $this->num, 2);
    }
}
//new出对象
$phone2 = new phone2('某为手机','6999.99','14');
echo $phone2->product .  $phone2->num .'台的总价是:' . $phone2->total() . '<hr>';

//场景3 :方法重写
class phone3 extends phone2{
    //重写total()
    public function total(){
        $total = parent::total();
        //设置折扣率
        switch (true){
            case ($total > 2000 && $total < 40000):
                $dis = 0.88;
                break;
            case ($total >=40000 && $total < 60000):
                $dis = 0.78;
                break;
            case ($total >= 60000):
                $dis = 0.68;
                break;
            default:
                $dis = 1;
        }

        //打折后价格
        $disPrice = round($total*$dis,2);
        if($dis<1){
            $disPrice = $disPrice . '元<span style="color: red">('. $dis.'折)</span>';
        }
        return $disPrice;
    }
}

$phone3 = new phone3('笔记本','4999.99',50);
echo '折扣价是:' . $phone3->total();













?>

运行实例 »

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





2 实例演示类成员的三种访问限制符的使用场景

实例

<?php
//实例演示类成员的三种访问限制符的使用场景
//访问控制符
//public    公共权限修饰符,可以在任何地方被访问
//protected 受保护权限修饰符,可以被其自身、子类、父类访问
//private   私有权限修饰符,只能被其所在类访问

class Demo{
    public      $name;          //姓名
    protected   $position;      //职位
    protected   $department;    //部门
    private     $salary;        //工资

    //创建公共的构建方法
    public function __construct($name,$position,$department,$salary)
    {
        $this->name         = $name;
        $this->position     = $position;
        $this->department   = $department;
        $this->salary       = $salary;
    }

    //职位访问方法
    public function getPosition()
    {
        return $this->position === '开发部' ? $this->position : '无权查看';
    }

    //部门访问方法
    public function getDepartment(){
        return $this->department;
    }

    //工资方法方法
    public function getSalary()
    {
        //工资只允许财务部的人查看
        return $this->department ==='财务' ? $this->salary : '无权查看';
    }
}
$obj = new Demo('朱老师','开发部','讲师',8888);
echo $obj->name,'<br />';
echo $obj->getPosition(),'<br />';
echo $obj->getDepartment(),'<br />';
echo $obj->getSalary(),'<br />';

?>

运行实例 »

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

 




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