Blogger Information
Blog 77
fans 0
comment 0
visits 55258
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
子类三个应用场景与类成员的三种方法修饰符_0930
Jet的博客
Original
1050 people have browsed it

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 />';

?>

运行实例 »

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

 




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