批改状态:合格
老师批语:子类最重要的应用就是代码复用
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 />';
?>点击 "运行实例" 按钮查看在线实例
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号