博主信息
博文 35
粉丝 0
评论 0
访问量 31145
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
类与对象,类的继承和封装--2019年6月13和14日22:30分
白守的博客
原创
844人浏览过

作业


本文章涉及的知识点有

    1.类与对象

    2.对象属性

    3.对象方法

    4.构造方法

    5.类的继承

    6.访问控制

    (我这是刚开始学习对象,可能代码现在非常臃肿,后面我会改进(经过测试暂时没有发现bug))



实例

<?php

class xs
{
    // 创建对象属性 ------
    public $name;  //姓名
    protected $bm;  //部门
    private $cj; // 成绩
    public $nl;   //年龄


    // 构造方法
    public function __construct($name,$bm,$cj,$nl)
    {
        $this->name = $name;
        $this->bm = $bm;
        $this->cj = $cj;
        $this->nl = $nl;

    }
//   创建访问接口
    public function getbm()

    // 进行判断收到的数据有没有和下面要求对等
    {   
        // 部门
        return $this->bm === '培训部' ? $this->bm : '无权查看';
    }

    public function getnl()
    {
        // 年龄
        return $this->nl === 22 ? $this->nl :'没有权限';
    }

    // 成绩
    public function getcjw()
    {
        // 成绩
        return $this->cj === 150 ? $this->cj :'没有权限';
    }
//   成绩评价
    public function getcj($value)
    {
        // 成绩
        return $this->cj === 150 ? 'A' :'没有权限';
    }
}

$x = new xs('小明同学', '培训部', 150, 22);
echo '姓名:'.$x->name.'<br>';
echo '年龄:'. $x->getnl(). '<br>';
echo '成绩:'.$x->getcjw(). '<br>';
echo '成绩评价:'.$x->getcj(150). '<br> <hr>';


// var_dump($x->getbm());

// 总成绩
// 子类  增加属性和方法,扩展父类功能(相当于增加新功能)
class xs1 extends xs
{
    public $yw;
    public $sx;
    public $yy;

    // 子类的构造方法
    public function __construct($name,$bm,$cj,$nl,$yw,$sx,$yy)
    {
          // parent:: 调用被覆写的父类方法内容
        parent::__construct($name,$bm,$cj,$nl);
        $this->yw=$yw;
        $this->sx=$sx;
        $this->yy=$yy;
    }

    public function zcj()
    {
        return $this->yw+$this->sx+$this->yy;
    }
}
// 实例化子类
$x1 = new xs1('小明同学', '培训部', 150, 22,150,150,150);
echo '姓名:'.$x1->name.'<br>';
echo '年龄:'. $x1->getnl(). '<br>';
echo '总成绩'. $x1->zcj(). '<br>';
echo '成绩评价:'.$x1->getcj(150). '<br> <hr>';


// 第三个子类, 继承自xs1, 而xs1又继承自xs,这就形成了多层给的继承关系
class xs2 extends xs1
{
    public function zc()
    {
        // 获取总成绩
        $zcj = parent::zcj();


        // 设置成绩评分
        switch(true){
            case($zcj >=1 && $zcj <200):
            $pf = 'C';
            break;
            case($zcj >=200 && $zcj <300):
            $pf = 'B';
            break;
            case($zcj >=300 && $zcj <400):
            $pf = 'A';
            break;
            case($zcj >=400 && $zcj <450):
            $pf = 'S';
            break;
            case($zcj =450):
            $pf = 'SSS';
        }
        return $pf;
    }
}
// 实例化子类
$x2 = new xs2('小明同学', '培训部', 150, 22,150,150,10);
echo '姓名:'.$x2->name.'<br>';
echo '年龄:'. $x2->getnl(). '<br>';
echo '总成绩'. $x2->zcj(). '<br>';
echo '成绩评价:'.$x2->zc(). '<br> <hr>';

运行实例 »

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

批改状态:未批改

老师批语:
本博文版权归博主所有,转载请注明地址!如有侵权、违法,请联系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+教程免费学