A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 小鲁哥哥 黑马粉丝团   /  2017-8-15 11:29  /  1600 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 小鲁哥哥 于 2017-8-15 11:35 编辑

【黑马程序员济南】PHP类中关键字

今天我来为大家讲解一下PHP类中的一些关键字:
parent和self关键字
parent:
      用在一个类的一个方法中;
      代表这个类的“父类”——注意,是代表一个类,不是类的对象;
      但:实际应用中,常常会看起来“代表”这个类的父类对象——因为用的时候,是使用了父类的对象来调用某个方法而产生了所谓的对象传递;
[PHP] 纯文本查看 复制代码
<?php
/*传智播客济南中心出品*/ 
class A{
    //在A类中声明一些变量
    const PI = 3.14; //声明常量
    static $s1 = 1; //声明静态属性
}

class B extends A{
    static function f1(){
        echo "父类的静态属性s1:".parent::$s1;
        echo "父类的常量PI:".parent::PI;
    }
}
B::f1();

显示结果:
      父类的静态属性s1:1
      父类的常量PI:3.14

self:
      用在一个类的一个方法中;
      代表这个类“本身”——还是代表一个类,而不是类的对象;
[PHP] 纯文本查看 复制代码
<?php
/*传智播客济南中心出品*/ 

class B {
    static $s2 = 2; //声明一个静态变量
    const PI = 3.14; //声明常量
    static function f1(){
        echo "自己的静态属性s1:".self::$s1;
        echo "自己的常量PI:".self::PI;
    }
}
B::f1();

典型使用1:
      在构造方法中,调用父类的构造方法,以完成对象的一些共同的数据初始化工作。
[PHP] 纯文本查看 复制代码
<?php
/*传智播客济南中心出品*/ 

class Member{
    public $name;//声明一个变量
    public $salary;//声明一个变量
    //创建一个构造方法
    function __construct($name,$salary){
        $this->name = $name;//把实例化类时的实参传递给之前声明好的变量
        $this->salary = $salary;//把实例化类时的实参传递给之前声明好的变量
    }
}
class Teacher extends Member{
    public $edu;//声明一个变量
     //创建一个构造方法
     function __construct($name,$salary,$edu){
        //$this->name = $name;
        //$this->salary = $salary;
        //将上面两行的内容用下面一行类代替
        //调用父类的构造方法,去完成一个共同属性数据的初始化
       parent::__construct($name,$salary);
       //把实例化类时的实参传递给之前声明好的变量
       $this->edu = $edu;
    }
}
class Student extends Member{
    public $age;//声明一个变量
     //创建一个构造方法
     function __construct($name,$salary,$age){

        //调用父类的构造方法,去完成一个共同属性数据的初始化
       parent::__construct($name,$salary);
       //把实例化类时的实参传递给之前声明好的变量
       $this->age = $age;
    }
}
$t1 = new Teacher("老师",1000,"大学");
echo "<pre>";
var_dump($t1);
echo "<br />";
$s1 = new Student("学生",100,18);
var_dump($s1);


不知道大家对今天讲解的parent和self关键字学习的程度如何啊?如果有兴趣,欢迎来黑马程序员济南中心来详细了解PHP~





0 个回复

您需要登录后才可以回帖 登录 | 加入黑马