Correction status:qualified
Teacher's comments:子类最重要的应用就是代码复用
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 />'; ?>
点击 "运行实例" 按钮查看在线实例