创建一个学生类,包含学生的姓名、性别、年龄、成绩、。
姓名和性别是public 年龄是 protected 成绩是 private
<?php class student { public $name; public $gender; protected $age; private $grade; public function __construct($name,$gender,$age,$grade) { $this->name = $name; $this->gender = $gender; $this->age = $age; $this->grade = $grade; } public function getInfo() { $res = '学生信息'; $res .= '<br>姓名: '.$this->name; $res .= '<br>性别: '.$this->gender; $res .= '<br>年龄: '.$this->age; $res .= '<br>成绩: '.var_export($this->grade,true); echo $res; } // private 私有成员属性 public function getGrade($ver) { return $ver === '梁伟' ? var_export($this->grade,true) : '你没有权限查看'; } } $info = new student('梁伟','男',34,[80,90,95]); echo $info->getInfo(); //此时无法用 $info->grade 访问 protected private 私有成员属性; private $grade可以用提供的方法来访问 echo '<br>'; echo $info->getGrade('梁伟');//必须要提供正确的参数才可以访问 echo '<br>'; //------------------------------------------------------------------------------ class student1 extends student { // 新成员属性 public $height; // 重写父类的构造函数 public function __construct($name, $gender, $age, $grade,$height) { parent::__construct($name, $gender, $age, $grade); $this->height = $height; } // 重写父类的方法 名称与父类相同将会重写父类同名的方法 public function getInfo() { // 调用父类 parent::getInfo(); // TODO: Change the autogenerated stub // 新增加 echo $this->height; } public function getGrade($ver) { // 也可以改写父类定义的private属性返回的方法 利用调用父类的私有方法 return $ver === '小明' ? parent::getGrade('梁伟') : '1你没有权限查看'; // return parent::getGrade($ver); // TODO: Change the autogenerated stub } } $extStu = new student1('小明','男',18,[40,50,60],'140cm'); $extStu->getInfo(); //调用子类改写的私有属性成员方法 echo '<br>'.$extStu->getGrade('小明');
点击 "运行实例" 按钮查看在线实例