博客列表 >用面向对象的知识编写一个学生信息的类(使用到类的构造、属性的访问、输出模板的设置、类的继承)2019年6月13日20点

用面向对象的知识编写一个学生信息的类(使用到类的构造、属性的访问、输出模板的设置、类的继承)2019年6月13日20点

Nick的博客
Nick的博客原创
2019年06月17日 23:39:321495浏览

使用类的构造、属性的访问、输出模板的设置、类的继承等完成一个学生信息类:

实例

<?php
//学生信息
class Student {
  //属性
    public $name;
    public $age;
    //private私有变量,子类或外部不能访问,只能在本类使用,除非添加获取器。
    private $sex;
    //protected,子类可以访问,外部不能访问
    protected $grade;


    //构造函数,初始化化模板
    public function __construct($name,$age,$sex,$grade)
    {
        $this->name = $name;     //姓名
        $this->age = $age;       //年龄
        $this->sex = $sex;       //性别
        $this->grade = $grade;   //成绩

//        //预设输出
//        echo $this->getInfo();
    }

    //私有变量获取器
    public function getSex() {
        return var_export($this->sex,true);
    }
    //私有变量获取器
    public function getGrade() {
        return var_export($this->grade, true);
    }

//    //私有变量通过角色判断才可以获得相对数值
//    public function getGrade1() {
//        $grade = '<br>成绩是:';
//        if ($this->role === '老师') {
//            $grade .= var_export($this->grade,true);
//        }else {
//            $grade = '只有老师才能查看最终成绩';
//        }
//        return var_export($grade);
//    }

    //输出函数
    public function getInfo(){
        $stu = '学生的';
        $stu .= '姓名:'. $this->name;
        $stu .= '<br>年龄:'. $this->age;
        $stu .= '<br>性别:'. $this->getSex();
        $stu .= '<br>成绩:'. $this->getGrade();

        //返回输出模板
        return $stu;
    }
}

$student = new Student('nick',27,'男',90);
//输出信息
echo $student->getInfo();

echo '<hr>';

//继承
class Role extends Student{
    //添加角色属性
    public $role;
    //角色属性初始化
    public function __construct($name, $age, $sex, $grade,$role)
    {
        parent::__construct($name, $age, $sex, $grade);

        $this->role = $role;
    }

    //重写输出模板getInfo()
    public function getInfo()
    {
        //先判断角色是否可以查看学生成绩,预设只有老师和管理员可以查看学生成绩
        if ($this->role === '老师' || $this->role === 'admin'){
            $stu  = '登录人员:'. $this->role . '<br>';
            $stu .= '学生的';
            $stu .= '姓名:'. $this->name;
            $stu .= '<br>年龄:'. $this->age;
            $stu .= '<br>性别:'. $this->getSex();
            $stu .= '<br>成绩:'. $this->getGrade();

            //返回输出模板
            return $stu;
        }else {
            $stu  = '登录人员:'. $this->role . '<br>';
            $stu .= '学生的';
            $stu .= '姓名:'. $this->name;
            $stu .= '<br>年龄:'. $this->age;
            $stu .= '<br>性别:'. $this->getSex();
            $stu .= '<br>成绩:'. '非老师或管理员,无权查看';

            //返回输出模板
            return $stu;
        }
    }


}

$student = new Role('Nick',27,'男',90,'学生');
//输出信息
echo $student->getInfo();

echo '<hr>';
//测试老师或者管理员是否可以查看完整学生信息
$teacher = new Role('Nick',27,'男',90,'老师');
//输出信息
echo $teacher->getInfo();

echo '<hr>';
//测试老师或者管理员是否可以查看完整学生信息
$admin = new Role('Nick',27,'男',90,'admin');
//输出信息
echo $admin->getInfo();

运行实例 »

点击 "运行实例" 按钮查看在线实例


最终在页面显示出的查询效果:

学生信息类的显示.png

声明:本文内容转载自脚本之家,由网友自发贡献,版权归原作者所有,如您发现涉嫌抄袭侵权,请联系admin@php.cn 核实处理。
全部评论
文明上网理性发言,请遵守新闻评论服务协议