本帖最后由 小鲁哥哥 于 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~
|