博客列表 >类与对象,类的继承和封装--2019年6月13和14日22:30分

类与对象,类的继承和封装--2019年6月13和14日22:30分

白守的博客
白守的博客原创
2019年06月19日 19:00:56691浏览

作业


本文章涉及的知识点有

    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 核实处理。
全部评论
文明上网理性发言,请遵守新闻评论服务协议