博客列表 >第13章 对象继承与成员访问-2019年09月30日20时00分

第13章 对象继承与成员访问-2019年09月30日20时00分

Tommy-黄天浩的博客
Tommy-黄天浩的博客原创
2019年10月07日 01:05:15570浏览

一、子类的作用

  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: 只允许在类中, 类外, 子类中不可访问

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