创建一个学生类,包含学生的姓名、性别、年龄、成绩、。
姓名和性别是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('小明');
运行实例 »
点击 "运行实例" 按钮查看在线实例