Blogger Information
Blog 35
fans 0
comment 0
visits 25366
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
类与对象,类的继承和封装--2019年6月13和14日22:30分
白守的博客
Original
693 people have browsed it

作业


本文章涉及的知识点有

    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>';

运行实例 »

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

Correction status:Uncorrected

Teacher's comments:
Statement of this Website
The copyright of this blog article belongs to the blogger. Please specify the address when reprinting! If there is any infringement or violation of the law, please contact admin@php.cn Report processing!
All comments Speak rationally on civilized internet, please comply with News Comment Service Agreement
0 comments