php面向对象中static静态属性和静态方法的调用

<?php
 /*静态属性和静态方法*/
 class StaticExample{
public $say="Tom";
 static public $aNum=0;
	 static public function sayHello(){
		 self::$aNum++;
		 echo self::$aNum;
		 //echo $this->$say;错误,静态方法不能访问非静态属性
		 //Whosay();不可以调用
	 } 
	 function Whosay(){
		 echo $this->say;
		 echo "+".self::$aNum;//非静态方法访问静态属性,也需要self
	     self::sayHello();//非静态方法访问静态方法,也需要self
	 } 
 }
 $example = new StaticExample();
 echo StaticExample::$aNum;//0 类::属性名,访问静态属性 
 echo "<hr />";
 StaticExample::sayHello();//1 类::方法名,访问静态方法
 echo "<hr />";
 $example->sayHello();//2 对象可以访问静态方法
 echo "<hr />";
 echo $example::$aNum;//2 对象可以访问静态属性
 echo "<hr />";
 $example->Whosay();
 echo "<hr />";
 //StaticExample::Whosay();Whosay中没有$this->就能出结果,但php5.4以上会报错
 ?>

结论:

(1)静态属性不需要实例化即可调用。因为静态属性存放的位置是在类里,调用方法为"类名::属性名";
(2)静态方法不需要实例化即可调用。同上
(3)静态方法不能调用非静态属性。因为非静态属性需要实例化后,存放在对象里;

(4)非静态方法可以调用静态属性和静态方法,前提是使用self关键字

(5)对象可以访问静态方法和属性,不过访问形式不同

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值