14.2.5 访问对象的属性和方法
一个对象实例的属性是变量,就像PHP的其他变量一样,只不过必须使用->运算符来引用它们,但不需要在属性前使用符号$。访问方法和访问属性一样,使用->运算符用来指向实例的方法。对象的方法执行起来和普通函数几乎相同。
在前面讲述类的继承时讲到,如果一个类从另一类中继承而来,基类中的属性和方法将在派生类中都有效。即使在派生类中没有声明,基类中的方法和属性一样会在派生类中有效。如果要访问一个继承的属性,只需像访问基类自己的属性那样引用即可,使用:运算符。在PHP的类继承用法中,有两个特殊的命名空间:parent和self。parent命名空间指向父类,self命名空间指向当前类。代码14-4演示了它们的用法。
代码14-4 parent和self的用法14-4.php
01 <?php
02 class Animal//定义动物类(基类)
03 {
04 public$blood;//动物的热血和冷血属性
05 public$name;
06
07 public function__construct($blood,$name=NULL)//构造函数
08 {
09 $this->blood=$blood;
10 if($name)
11 {
12 $this->name=$name;
13 }
14 }
15 }
16
17 class Mammal extends Animal//哺乳动物,由Animal类派生
18 {
19 public$fur_color;//哺乳动物皮毛颜色属性
20 public$legs;
21 function__construct($fur_color,$legs,$name=NULL)//构造函数
22 {
23 parent::construct("warm",$name);
24 $this->fur_color=$fur_color;
25 $this->legs=$legs;
26 }
27 }
28
29 class Cat extends Mammal//Cat类,由Mammal派生
30 {
31 function__construct($fur_color,$name)//构造函数
32 {
33 parent:__construct($fur_color,4,$name);
34 self::bark();//调用该类的另一个方法bark()
35 }
36
37 function bark()//成员函数bark()
38 {
39 print("$this->name says,'mew~mew~'");
40 }
41 }
42
43 $cat_xiaobai=new Cat("white","XiaoBai");
44 ?>
【代码解析】这段代码显示了如何使用parent命名空间在派生类Mammal中来调用父类的构造函数,如代码第23行所示。同时也使用self在Cat类的构造函数中调用该类的另一个方法,如第34行所示。
共有条评论 网友评论