Correction status:qualified
Teacher's comments:protectd 类中,还能在子类中访问
1、演示子类的三个应用场景
<?php /* * 国庆期间作业: 1. 将落下的作业, 尽可能的全部补齐 2. 复习面向对象开发中的静态成员, 类常量,属性重载, 方法重载, 抽象成员, 接口的知识 3. 9月30日作业, 实例演示子类的三个应用场景, 实例演示类成员的三种访问限制符的使用场景 4. 复习数据库的基本操作,并将之关欧阳克老师布置的作业全部完成, 案例全部写完 */ header('Content-Type:text/html;charset=utf-8'); class A{ public $price; public $name; public function __construct($name,$price) { $this->price = $price; $this->name = $name; } public function getInfo(){ return $this->name . $this->price; } } echo "<p>1、复用父类方法</p>"; class B extends A{ } echo (new B("手机价格信息:",1000))->getInfo(); echo "<p>2、父类功能扩展</p>"; class B1 extends A{ public function __construct($name,$price, $num) { parent::__construct($name, $price); $this->num = $num; } public function total(){ return $this->price * $this->num; } } $b1 = new B1('手机总价:',1000,10); echo $b1->name . $b1->total(); echo "<p>3、父类方法重写</p>"; class B2 extends B1{ public function total(){ $total = parent::total(); switch (true){ case $total > 10000 : $dis = 0.5; break; case ($total>5000 && $total<10000) : $dis = 0.88; break; default : $dis = 1; } return round($total * $dis,2); } } $b2 = new B2('手机折扣总价:',1000,13); echo $b2->name . $b2->total();
点击 "运行实例" 按钮查看在线实例
2、类成员的三种访问限制符的使用场景
<?php class A{ public $name; protected $price; private $num; public function __construct($name,$price,$num) { $this->name = $name; $this->price = $price; $this->num = $num; } function get(){ return $this->price .'------'. $this->num; } } $A = new A('电脑','3400','2'); echo 'public标识符可外部输出:'.$A->name."<br>"; echo 'protected\private 标识符只能通过内部的方法调用输出:'.$A->get()."<br>";
点击 "运行实例" 按钮查看在线实例
总结:
1、子类继承父类可以进行方法复用、对父类进行扩展、及方法的重写
2、public 类中,内外都能访问
3、protectd 类中,只能内部访问
4、private 类中,只能内部访问