第二十一节:类与对象-对象的赋值-Final关键字-多态
PHP的对象实例化和对象赋值($a=new A();$b=$a),是引用赋值,但是又不完全一样,貌似叫个引用操作符复制,反正搞的云里雾里,到现在没具体搞明白。
但是这个clone是彻底的拷贝 到新内存中 $b= clone $a;
Final关键字
父类中的方法被声明为final,则子类无法覆盖该方法;如果一个类被声明为final,则不能被继承。
1 <?php 2 class Faclass{ 3 function bar(){ 4 5 } 6 final function foo(){ 7 8 } 9 } 10 class Sonclass extends Faclass{ 11 function bar(){ 12 13 } 14 //父类中方法加final关键字无法重写 Fatal error: Cannot override final method Faclass::foo() 15 function foo(){ 16 17 } 18 } 19 ?>
<?php final class Faclass{ } //父类声明 final关键字 无法被继承 //Fatal error: Class sonclass may not inherit from final class (Faclass) class sonclass extends Faclass{ } ?>
多态
什么是多态性?
多态性是继数据抽象和继承后,面向对象语言的第三个特征。从字面上理解,多态的意思是“多种形态”,简单来说,多态是具有表现多种形态的能力的特征,在OO中是指“语言具有根据对象的类型以不同方式处理之,特别是重载方法和继承类这种形式”的能力。多态被认为是面向对象语言的必备特性。
其实,它的真正意义在于:实际开发中,我们只需要关注一个接口或基类的编程,而不必担心一个对象所属于的具体类(class)。
如果你熟悉设计模式,即使只是有个初步了解,那么你也会了解这个概念。事实上,多态性可能是基于模式设计编程中的最伟大的工具。它允许我们以一种逻辑的方式来组织相类似的对象从而实现在具体编码时不必担心对象的具体类型;而且,我们只需要对一个所期望的接口或基类编程即可。一个应用程序越抽象,则它就显得越灵活–而多态性是对行为加以抽象的最好的方式之一。