Blogger Information
Blog 14
fans 1
comment 0
visits 11723
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
2019.09.30作业 类的方法、构造函数、继承及访问控制符
Léon的博客
Original
848 people have browsed it

总结:

一、类中的方法、self、$this

    1、类中的变量称为属性,类中的函数称为方法。

    2、在类中的方法实例化类可以使用 new self(); self为当前类的引用。

    3、$this 是当前对象的引用,是一个伪变量。$this不需要创建,可以直接使用。

    4、类中的方法尽量用return返回需要的内容。

二、类的构造函数

    1、构造函数是PHP中的一个魔术方法,构造函数的形式:

        public function __construct(参数列表){


        }

    2、PHP中如果变量没有初始化,其为NULL

    3、魔术方法:以__开头的方法是魔术方法,魔术方法不需要用户调用,他由PHP根据某种条件自动触发。

    4、构造函数的作用:

        (1)初始化对象

        (2)完成对象创建是的自动化操作

三、类的继承

    1、类继承的关键字:extends

    2、类继承的作用:代码复用

    3、类继承的三个应用:

        (1)代码复用:子类可以使用父类中的代码(public和protected修饰的)

        (2)功能拓展:子类中可以添加属性和方法,拓展父类。

        (3)方法重写:子类可以重写父类中的方法。

    4、子类调用父类的方法可以使用:parent::方法名。

四、对象成员的访问控制:

    1、对象成员有三种访问控制符:public、protected、private

    2、三种访问控制符的权限:

        (1)public修饰的成员在类中、类外、子类中均可访问。

        (2)protected修饰的成员在类中、子类中均可访问,类外不可以访问。

        (3)private修饰的成员仅在类中可以访问,类外、子类中均不可访问。

作业:

1:子类的三个应用场景:

实例

<?php
    // 继承的三个用途:
    class Person{

        public $name;
        public $age;
        public $sex;

        public function __construct($name,$age,$sex)
        {
            // 构造函数的作用1:初始化对象
            $this->name=$name;
            $this->age=$age;
            $this->sex=$sex;
            // 构造函数的作用2:完成对象创建时的自动化操作
            echo $this->getInfo();
        }
        public function getInfo(){
            // 函数中尽量不要使用echo,把需要的内容return出去
           return $this->name . '<br>' . $this->age . '<br>' . $this->sex . '<hr>';
        }

    }
    // 1:复用父类的代码    
    class Man extends Person{

    }
    $man=new Man('小黑',32,'男');

    // 2、拓展父类功能
    class Women extends Person{
        public $wight;
        public function __construct($name,$age,$sex,$wight)
        {
            //使用parent::__construct(参数);可以复用父类的构造函数
            parent::__construct($name,$age,$sex);
            $this->wight=$wight;
        }
        public function dieted(){
            if($this->sex==='女'){
                if($this->wight>50){
                    return $this->name . '体重' .  $this->wight . '斤,要减肥了。';
                }
                else{
                    return $this->name . '体重' .  $this->wight . '斤,身材很棒。';
                }
            }
            else{
                return '我们之为女性服务。';
            }          
        }
    }
    $women=new Women('小红',23,'女',51);
    echo $women->dieted();
    echo '<hr>';
    // 3、重写父类中的方法
    class FatWomen extends Women{
        public function dieted(){
            if($this->sex==='女'){
                if($this->wight>50&&$this->wight<=60){
                    return $this->name . '体重' .  $this->wight . '斤,要减肥了。' . '减肥套餐:¥998';
                }
                else if($this->wight>60&&$this->wight<=80){
                    return $this->name . '体重' .  $this->wight . '斤,要减肥了。' . '减肥套餐:¥1998';
                }
                else if($this->wight>80){
                    return $this->name . '体重' .  $this->wight . '斤,要减肥了。' . '减肥套餐:¥5998';
                }
                else{
                    return $this->name . '体重' .  $this->wight . '斤,身材很棒,不用减肥了。';
                }
            }
            else{
                return '我们之为女性服务。';
            }        

        }
    }

    $fatwomen=new FatWomen('小红',23,'女',69);
    echo $fatwomen->dieted();

运行实例 »

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

2、访问控制符的应用

实例

<?php
// 访问控制符的应用场景
class Person{
    // private修饰的成员在类中、类外及子类均可以访问
    public $name;
        // private修饰的成员在类中和子类中可以访问,类外不可访问
    protected $age;
    // private修饰的成员仅在类中可以访问,类外及子类均不可访问
    private $sex; 

    public function __construct($name,$age,$sex)
    {
        $this->name=$name;
        $this->age=$age;
        $this->sex=$sex;
    }
    public function getAge(){
        return $this->age;
    }
    public function getSex(){
        return $this->sex;
    }
}
$person=new Person('小明',50,'男');

// age属性是protected不可以在类外访问,但可以在类内访问,通过getAge方法返回出来
// echo $person->age;
echo $person->getAge();
echo '<hr>';
// sex属性是private不可以在类外访问,但可以在类内访问,通过getSex方法返回出来
// echo $person->sex;
echo $person->getSex();
echo '<hr>';

class Man extends Person{
    public function getAge()
    {
        return $this->age;
    }
    public function getSex()
    {
        return $this->sex;
    }
}

$man=new Man('小王',42,'男');

// age属性是protected不可以在类外访问,但可以在子类中访问,通过getAge方法返回出来
// echo $man->age;
echo $man->getAge();
// sex属性是private不可以在类外访问,也不可以在子类中访问。
// echo $man->sex;
// echo $man->getSex();

运行实例 »

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


Correction status:qualified

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
Author's latest blog post