博主信息
博文 49
粉丝 1
评论 0
访问量 53463
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
用面向对象的知识编写一个学生信息的类(使用到类的构造、属性的访问、输出模板的设置、类的继承)2019年6月13日20点
Nick的博客
原创
1705人浏览过

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

实例

<?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举报处理!
全部评论 文明上网理性发言,请遵守新闻评论服务协议
0条评论
作者最新博文
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号

  • 登录PHP中文网,和优秀的人一起学习!
    全站2000+教程免费学