网站地图    收藏   

主页 > php专栏 > php面向对象 >

PHP面向对象开发之类的常用关键字 - php面向对象

来源:自学PHP网    时间:2014-11-30 12:29 作者: 阅读:

[导读] php中类的常用关键字包括有:锁(fianl)、有点类似与this关键字(self)、静态属性(static)、常量关键字(const)下面我来给大家整理整...

PHP面向对象开发之类的常用关键字

php中类的常用关键字包括有:锁(fianl)、有点类似与this关键字(self)、静态属性(static)、常量关键字(const)下面我来给大家整理整理。

类中的常用关键字

1.fianl:锁

2.self:有点类似与this关键字

3.static:静态属性

4.const:常量关键字

1.关键字:fianl

用来定义类和方法的一个重要关键字,当定义类的时候该类不能被继承,用来定义方法的时候该方法不能被重载。

1. final不成修饰成员属性(类中常不是用这个关键字)

2. final只能修饰类和方法

作用:

使用final修饰的类 不 能被子类继承

使用final修饰的方法不能被子类去覆盖

用来限制类不被继承,方法不被覆盖就使用fianl

类使用 final 关键字的例子:

  1. final class Person 
  2.     ...... 

final 定义的类被继承时会提示如下错误:

Fatal error: Class Student may not inherit from final class (Person) in ...

方法使用 final 关键字的例子:

  1. class Person 
  2.     final function say() 
  3.     { 
  4.         ...... 
  5.     } 

Example #1 Final 方法示例,代码如下:

  1. <?php 
  2. class BaseClass { 
  3.    public function test() { 
  4.        echo "BaseClass::test() calledn"
  5.    } 
  6.     
  7.    final public function moreTesting() { 
  8.        echo "BaseClass::moreTesting() calledn"
  9.    } 
  10. class ChildClass extends BaseClass { 
  11.    public function moreTesting() { 
  12.        echo "ChildClass::moreTesting() calledn"
  13.    } 
  14. // 产生 Fatal error: Cannot override final method BaseClass::moreTesting() 
  15. ?> 

Example #2 Final 类示例,代码如下:

  1. <?php 
  2. final class BaseClass { 
  3.    public function test() { 
  4.        echo "BaseClass::test() calledn"
  5.    } 
  6.     
  7.    // 这里无论你是否将方法声明为final,都没有关系 
  8.    final public function moreTesting() { 
  9.        echo "BaseClass::moreTesting() calledn"
  10.    } 
  11. class ChildClass extends BaseClass { 
  12. // 产生 Fatal error: Class ChildClass may not inherit from final class (BaseClass) 
  13. ?> 

2.关键字:self

在访问PHP类中的成员变量或方法时,如果被引用的变量或者方法被声明成const(定义常量)或者static(声明静态),那么就必须使用操作符::,反之如果被引用的变量或者方法没有被声明成const或者static,那么就必须使用操作符->。

另外,如果从类的内部访问const或者static变量或者方法,那么就必须使用自引用的self,反之如果从类的内部访问不为const或者static变量或者方法,那么就必须使用自引用的$this

格式:self::类内部成员(属性或者方法)

|| 等价于

类名::类内部成员(属性或者方法)

注意:因为没有数理化类访问内部属性或方法是没有意义的,所以self一般用来访问类中的:静态成员,常量,其他定义的内容。

3.关键字:static

内存优化,用来定义静态属性或方法,可以在类未被实例化时就能使用。静态属性单独占用内存,而不会因创建多个对象而重复占用内存。

格式:

  1. class class1 { 
  2. static $name
  3. static function fun1 { 
  4. ... 

静态成员的访问(类内部):

self::静态成员

类名称::静态成员

静态成员的访问(类外部):

类名称::静态成员

4.关键字:const

用来定义类中的常量,只能修饰类当中的成员属性。

格式:

  1. class class1 { //建议用大写定义,不使用$符号。 
  2. const NAME; 
  3. ... 

看个PHP const小例子吧,代码如下:

  1. <?php    
  2. class say_const{    
  3. const CHARSET="中国";    
  4. publice function say_hello() 
  5. {    
  6. echo slef::CHARSET;    
  7. }    
  8. }    
  9. $const1=new say_const()    
  10. $const1->say_hello();    
  11. ?> 

自学PHP网专注网站建设学习,PHP程序学习,平面设计学习,以及操作系统学习

京ICP备14009008号-1@版权所有www.zixuephp.com

网站声明:本站所有视频,教程都由网友上传,站长收集和分享给大家学习使用,如由牵扯版权问题请联系站长邮箱904561283@qq.com

添加评论