<?php
class Human{
static public $name = "小妹";
public $height = 180;
static public function tell(){
echo self::$name; //静态方法调用静态属性,使用self关键词
//echo $this->height; //错。静态方法不能调用非静态属性,因为 $this代表实例化对象,而这里是类,不知道 $this 代表哪个对象
}
public function say(){
echo self::$name . "我说话了"; //普通方法调用静态属性,同样使用self关键词
echo $this->height;
}
}
$p1 = new Human();
$p1->say();
$p1->tell(); //对象可以访问静态方法
echo $p1::$name; //对象访问静态属性。不能这么访问$p1->name,因为静态属性的内存位置不在对象里
Human::say(); //错。say()方法有$this时出错;没有$this时能出结果
?>
总结:
1、静态方法调用静态属性,使用self关键词;
2、静态方法不能调用非静态属性;
3、对象可以访问静态方法;
4、对象访问静态属性和方法使用::,注意调用属性需要加上$符合;