<?phpClass Person{ public static $country = "中国";// 定义静态成员属性 public $countries = "zhongguo"; //非静态类成员 public $mingzi = array();//非静态类成员 // 定义静态成员方法 public static function myCountry() { // 内部访问静态成员属性 echo "我是".self::$country."人<br />"; }}class Student extends Person { function study() { echo "我是". parent::$country."人<br />"; }}echo Person::$country."<br />"; // 输出:中国$p1 = new Person(); // 实例化类echo $p1->countries. "<br>"; //调用输出静态成员变量$p1->mingzi = array("liming"); //调用静态成员数组echo $p1->mingzi[0]; //输出静态成员数组中的元素Person::myCountry(); // 输出:我是中国人$p1->myCountry(); //调用静态成员方法echo Student::$country."<br />"; // 调用子类 输出:中国$t1 = new Student(); // 实例化子类$t1->study(); // 调用子类中的方法输出:我是中国人?><html><head><meta Content-Type="content-type:text/plain" charset="utf-8"></head></html>


输出结果:

中国
zhongguo
liming我是中国人
我是中国人
中国
我是中国人


public的变量可以如果没有static是可以实例化调用的调用,如果有static,就不能实例化调用。如:


正确的写法:

<?phpclass myclass{public static $name="amos";}class myclass1{public $mingzi="amos";}echo myclass::$name;$p2=new myclass1();echo $p2->mingzi;?><html><head><meta Content-Type="content-type:text/plain" charset="utf-8"></head></html>

错误的写法:

<?phpclass myclass{public static $name="amos";}class myclass1{public $mingzi="amos";}$p1=new myclass();echo $p1->name;echo myclass1::$mingzi;?><html><head><meta Content-Type="content-type:text/plain" charset="utf-8"></head></html>


为什么要声明static类型的成员和方法?

声明类成员或方法为static,就可以不实例化类而直接访问。

如何实例化?

$var= new classname();