在这一节中我们会讲到php面向对象final,self,ststic,const的使用
final关键字是用来锁住某个类或方法不被继承,我们看一下这段代码
<?php class demo{ public $name="minerchow"; function code(){ return "写代码"; } } class demo2 extends demo{ function code(){ return demo::code()."++"; } } $p=new demo2(); echo $p->code(); ?>
这段代码能够正常输出,但如果我们尝试在demo类中code()方法前加上final,系统报错啦
Fatal error: Cannot override final method demo::code() in D:\wamp\www\test\newfile.php on line 13
提示清楚显示不能重载final类,同理class前加上final也会出现相同情况
static用来定义静态属性和方法,
可以在类未被实例化时使用,静态属性单独占
用内存而不会因创建多个对象时而导致同样的方法或者属性重复占用。通常情况下和self同事使用
那让我们再看一下这段代码
<?php class demo{ public $name= 'minerchow'; function code(){ return $this->name."写代码"; } } class demo2 extends demo{ function code(){ return demo::code()."++"; } } $p=new demo2(); echo $p->code(); ?>
这段代码正常输出了minerchow写代码++,没有问题,现在我们把public换成static
这是我们发现$name的值minerchow并没有被显示,因为this不能获取静态属性,这是我们可以使用self
换成self::$name(注意name前有$),就能正常访问了
那么如何从外部访问静态属性呢
这时,我们可以用类名::方法名(或成员属性)
<?php final class demo{ static $name= 'minerchow'; function code(){ return self::$name."写代码"; } } echo demo::code(); ?>
最后简单说一下const用法,const表示常量,不同于变量,它无法在被修改
转载请注明来自multifeeling
本文标题:php面向对象详解5
本文地址:<a href="http://www.multifeeling.com/archives/%E2%80%9D%3Ca%20href=" http:="" www.multifeeling.com="" archives="" 152%e2%80%9d"="" target="_blank" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; color: rgb(134, 0, 0); text-decoration: none; ">http://www.multifeeling.com/archives/152%E2%80%9D"