PHP类实例教程(十):类的重写(override)
2010-01-19 14:05
375 查看
如果从父类继承的方法不能满足子类的需求,可以对其进行改写,这个过程叫方法的覆盖(override),也称为方法的重写。
当对父类的方法进行重写时,子类中的方法必须和父类中对应的方法具有相同的方法名称,在PHP5中不限制输入参数类型、参数数量和返回值类型。(这点和JAVA不同)
子类中的覆盖方法不能使用比父类中被覆盖方法更严格的访问权限。
声明方法时,如果不定义访问权限。默认权限为public。
先设置一个父类,这个父类是 “Dog”类,这个类描述了dog的特性。Dog有2个眼睛,会跑,会叫。就这样描述先。我养了一直狗,是只小狗,符合Dog类的特性,但有所不同。我的小狗有名字,我的小狗太小了,不会大声的叫,只会哼哼。 我们用继承的概念去实现这个设计。
重写方法与访问权限
子类中的覆盖方法不能使用比父类中被覆盖方法更严格的访问权限。
当对父类的方法进行重写时,子类中的方法必须和父类中对应的方法具有相同的方法名称,在PHP5中不限制输入参数类型、参数数量和返回值类型。(这点和JAVA不同)
子类中的覆盖方法不能使用比父类中被覆盖方法更严格的访问权限。
声明方法时,如果不定义访问权限。默认权限为public。
先设置一个父类,这个父类是 “Dog”类,这个类描述了dog的特性。Dog有2个眼睛,会跑,会叫。就这样描述先。我养了一直狗,是只小狗,符合Dog类的特性,但有所不同。我的小狗有名字,我的小狗太小了,不会大声的叫,只会哼哼。 我们用继承的概念去实现这个设计。
<?php //狗有两只眼睛,会汪汪叫,会跑 class Dog { protected $eyeNumber = 2; // //返回封装的属性方法 public function getEyeNumber() { return $this->eyeNumber; } //狗会叫 public function yaff() { return "Dog yaff, wang ..wang .."; } //狗会跑 public function run() { return "Dog run..running ..."; } } $dog = new Dog(); echo "dog have " . $dog->getEyeNumber() . " eyes. <br />"; echo $dog->yaff() . "<br />" . $dog->run(); echo "<br /><br /><br /><br />"; //这是我的小狗,叫"狗狗",他还小不会汪汪叫,智慧哼哼。。 class MyDog extends Dog { private $name = ""; public function getName() { return $this->name; } public function yaff() { return $this->name . " yaff, heng...heng .."; } } $myDog = new MyDog(); echo $myDog->getName() . " have " . $myDog->getEyeNumber() . " eyes. <br />"; echo $myDog->yaff() . "<br />" . $myDog->run(); ?>
重写方法与访问权限
子类中的覆盖方法不能使用比父类中被覆盖方法更严格的访问权限。
相关文章推荐
- PHP类实例教程(二):类和对象的基础部分
- Struts 2.1.6 精简实例系列教程(6):重写用户登录模块(整合Jquery+JSON)
- PHP类实例教程(十五):final类、final方法和常量
- PHP类实例教程(二十一):PHP类接口的继承
- PHP类实例教程(十六):PHP5中的常量
- PHP类实例教程(二十二):类型提示
- PHP类实例教程(七):析构函数与PHP的垃圾回收
- PHP类实例教程(三):PHP5类中的属性
- 在JavaScript中重写jQuery对象的方法实例教程
- java 重载(overload)与重写(override)详解及实例
- PHP类实例教程(八):类的继承
- PHP类实例教程(二十三):PHP抽象类实现接口
- PHP类实例教程(四):PHP5类中的方法
- PHP类实例教程(六):构造函数
- PHP类实例教程(九):访问控制 private, protected, public
- PHP类实例教程(十七):abstract类和abstract方法
- PHP类实例教程(二十四):PHP5类中的多态
- Java学习8:封装特性之方法的重写(Override)详解及实例说明
- Struts 2.1.6 精简实例系列教程(6):重写用户登录模块(整合Jquery+JSON)
- PHP类实例教程(七):析构函数与PHP的垃圾回收