PHP面向对象精要总结
本文实例汇总了PHP面向对象程序设计的精要。分享给大家供大家参考。具体分析如下:
1使用extends实现继承以及重载、魔术方法的含义
classBextendsA
声明的时候B里可以没有A里的方法
调用的时候:
$b=newB();
$b->A里的方法();
$b->A里的属性=1;
$b->B里的方法();
$b->B里的方法();
如果$a=newA();
可以
$a->A里的方法();
$a->A里的属性=1;
不可以
$a->B里的方法();
$a->B里的方法();
重载:B继承A,B里实现和A同名的方法属性。
PHP中的"重载"与其它绝大多数面向对象语言不同。传统的"重载"是用于提供多个同名的类方法,但各方法的参数类型和个数不同。
魔术方法:PHP把所有以__(两个下划线)开头的类方法当成魔术方法。所以你定义自己的类方法时,不要以__为前缀。
2继承用private和protected访问修饰符可见性
属性方法private不可以被继承
属性方法protected类外部不可见,可以被继承
属性方法public所定义的类成员可以在任何地方被访问
3php中双冒号::的应用
php类代码中常看到"::"的操作符,这个是作用域限定操作符,是用一个双冒号"::"表示,它用来置顶类中不同作用域的级别。左边是作用域右边是访问作用域的成员。
在php中定义的作用域有self和parent两种(在php6中提供了static作用域)。
范围解析操作符(也可称作PaamayimNekudotayim)或者更简单地说是一对冒号,可以用于访问静态成员、方法和常量,还可以用于子类覆盖父类中的成员和方法。
classMyClass{ constCONST_VALUE='Aconstantvalue'; }
echoMyClass::CONST_VALUE; classOtherClassextendsMyClass { publicstatic$my_static='staticvar';
publicstaticfunctiondoubleColon(){ echoparent::CONST_VALUE."\n"; echoself::$my_static."\n"; } }
OtherClass::doubleColon(); //子类覆盖父类 classMyClass { protectedfunctionmyFunc(){ echo"MyClass::myFunc()\n"; } }
classOtherClassextendsMyClass { //覆盖父类中的方法 publicfunctionmyFunc() { //但仍然可以调用已被覆盖的方法 parent::myFunc(); echo"OtherClass::myFunc()\n"; } }
$class=newOtherClass(); $class->myFunc();