php-面向对象(2)
原创
©著作权归作者所有:来自51CTO博客作者原小明呢的原创作品,请联系作者获取转载授权,否则将追究法律责任
1.回顾:上篇学习了,面向对象的一些基本知识,包括$this的使用
2.这篇将学习php面向对象的继承,属性,静态属性和方法
3.继承 (extends)
(1)一个类可以在声明用extends关键字继承另一类的方法和成员
(2)不过扩展多少个类,只能继承一个基类
(3)被继承的方法和成员可以通过用同样的名字重新声明被覆盖
(4)若父类定义方法使用了final关键字,则不可覆盖
(5)可以通过parent::来访问被覆盖的父类方法和成员
class aclass{
//成员变量
public $var="我是成员变量";
public $t1="我是t1";
//成员函数/方法
public function displayVar(){
echo "<br>";
echo $this->var;
echo $this->t1;
}
}
class bclass extends aclass{
public function displayVar(){
echo "我是 bclass";
parent::displayVar();
}
}
$f=new bclass();
$f->displayVar(); #结果: 我是 bclass 我是成员变量我是t1
4.属性
(1)类的成员变量为属性/字段/特征。一般使用属性。
(2)属性声明:
public:类成员可以在任何地方被访问;
protected :可以被其所在类的子类和父类访问(当然,该成员所在的类也可以访问)
private :能被其所在类访问。
var :可以放在public,prorected,private前面,也可直接声明属性:默认是public
(3)属性变量可以进行初始化,但初始化,必须是常数
(4)在类成员方法里,可通过 $this->属性/方法名 来访问属性/方法
class cclass{
public $var1="hello";
public $var2=array(TRUE,FALSE);
}
#在php5.3 后,可以使用nowdoc初始化属性
public $var3=<<<'yuan';
5.静态属性和方法 Static
(1)声明类成员或方法为static,就可以不实例化类,而直接访问。
(2)属性和方法默认为public
(3)伪变量$this 在静态方法中不可用
(4)静态属性只能初始化为一个字符值或一个常量/整型或数组
(5)用::方式调用静态方法或属性
#静态属性
class dclass{
public static $var4="我是static 属性";
public function staticValue(){
//类本身调用静态属性
return self::$var4;
}
}
class eclass extends dclass{
public function efun(){
//调用父类静态属性
return parent::$var4;
}
}
echo dclass::$var4; //结果:我是static 属性
$e=new eclass();
echo $e->staticValue(); //结果:我是static 属性
echo $e->efun(); //结果:我是static 属性
echo $e::$var4; //结果:我是static 属性
#php5.3.0后的支持
$classname='dclass';
echo $classname::$var4;//结果:我是static 属性
echo eclass::$var4; //结果:我是static 属性
echo $e->$var4; 结果:我是static 属性
#静态函数/方法
class fclass{
public static function ffun(){
//....
}
}
小结:在学习过程中,发现和java,c#很多相同的知识,所有速度有些kuai!
下篇学习php类常量,自动加载类,构造函数和析构函数!