标签:php 继承 重写父类方法时注意方法权限要大于父类的权限
<?php /* 继承性 1.面向对象的三大特性之一 2.开放性,可扩充性 3.增加代码的重用性 4.提高了软件的可维护性 php 使弱类型语言,没有重载的概念 子类中重载父类的方法 子类可以声明和父类相同的方法名,即子类覆盖父类中同名的方法 在子类中调用父类中被覆盖的方法 parent::方法名 在子类中编写构造方法,如果父类中也有构造方法,一定要调用父类中的构造方法 注意:子类中重载的方法,不能低于父类中的访问权限(子类可以放大权限,但不能缩小权限) */ include "./Person.class.php"; class Student extends Person{ var $school; function __construct($name="name1",$age =20,$sex="女", $school){ $this->name=$name; $this->age=$age; $this->sex=$sex; $this->school = $school; } function study(){ echo $this->age; echo $this->name.":我在{$this->school}学习<br>"; } /* 覆盖父类的say(),子类中重载的方法,不能低于父类中的访问权限(子类可以放大权限,但不能缩小权限) 父类中是public function say(){} 子类中变成了private function say(){} private function say(){ echo "{$this->name}:我在{$this->school}学习呢,请不要打扰我<br>"; } 这时候会报错Fatal error: Access level to Student::say() must be public (as in class Person */ public function say(){ parent::say(); echo "{$this->name}:我在{$this->school}学习呢,请不要打扰我<br>"; } } #$student = new Student; #$student->school="北京大学附属中学"; #$student->name="haha"; #$student->age=32; #$student->study(); #$student->say(); $student2 = new Student("李会东",24,"男","北京大学"); #echo $student2->school; $student2->say(); ?>
本文出自 “梦想指引方向” 博客,请务必保留此出处http://2656249.blog.51cto.com/2646249/1703631
标签:php 继承 重写父类方法时注意方法权限要大于父类的权限
原文地址:http://2656249.blog.51cto.com/2646249/1703631