Correction status:qualified
Teacher's comments:
<?php spl_autoload_register(function($classname){//使用自动加载器来加载类 require $classname.'.php'; }); $SPhone = new SPhone('xiaomi','note5',998,TRUE,TRUE);//初始化对象,验证parent::__contrunctor() echo '品牌'.$SPhone->brand.'<br>'; echo '型号'.$SPhone->model.'<br>'; echo '价格'.$SPhone->price.'<br>'; echo '照相'.($SPhone->camera ? 'yes':'no').'<br>';//输出在子类中扩展的属性 echo '网络'.($SPhone->internet ? 'yes':'no').'<br>'; echo $SPhone->call().'<br>';//call()中包含父类的属性 echo $SPhone->game().'<br>';//game()是子类中的方法 ?>
<?php class SPhone extends Phone//创建无需代码即可访问父类成员 { public function __get($name)//创建查询器,实现了外部访问 { return $this->$name; } //对父类属性进行扩展,增加新的特征,如果不在子类中使用,推荐设置为private private $camera = false; //是否有照相功能 private $internet = false; //是否有上网功能 //必须使用构造方法对使用当前新增属性生效 public function __construct($brand,$model,$price,$camera,$internet) { parent::__construct($brand, $model, $price,$camera,$internet);//调用父类构造器来简化子类的构造器初始化类属性 $this->camera = $camera; $this->internet = $internet; } public function game()//扩展父类的功能 { return '玩游戏'; } public function call()//将父类方法进行重写,功能重载必须使用与父类一样的方法名:call() { return parent::call().',同时还能听歌,看视频';//应用父类并输出 } } ?>
<?php class Phone{ protected $brand;//设置私密属性 protected $model; protected $price; public function __construct($brand,$model,$price)//调用类的成员变量 { $this->brand = $brand; $this->model = $model; $this->price = $price; } public function call() { return '打电话'; } } ?>
需要仔细理解spl_autoload_register,遇到手打无法使用的代码,复制的就可以使用,醉了