PHP笔记之面向对象(3)

目录

抽象类,抽象方法

抽象类:

抽象方法:

抽象类和抽象方法的细节

重载技术overloading

重载的基本概念

重载在“通常面向对象语言”中的含义:

重载在“php语言”中的含义:

属性重载

__GET($属性名):

__SET($属性名,值):

__ISSET($属性名):

__UNSET($属性名):

方法重载

利用php的重载技术,实现通常的“方法重载”:

接口(interface)技术

什么是接口?

接口(interface)定义形式:

为什么需要接口?

使用形式:

类和接口的大总结


抽象类,抽象方法

抽象类:

是一个不能实例化的类;

定义形式:

        abstract  class  类名{}

为什么需要抽象类:

       它是为了技术管理而设计!

抽象方法:

是一个只有方法头,没有方法体的方法定义形式;

定义形式:

        abstract  function  方法名( 形参1,形参2,.... ); //注意,这里必须有分号;

为什么需要抽象方法:

       它也是为了技术管理而设计:要求下级类需要去实现这个方法的“具体做法”;

PHP笔记之面向对象(3)

抽象类和抽象方法的细节

PHP笔记之面向对象(3)

重载技术overloading

重载的基本概念

重载在“通常面向对象语言”中的含义:

PHP笔记之面向对象(3)

重载在“php语言”中的含义:

PHP笔记之面向对象(3)

举例:

PHP笔记之面向对象(3)结果为:PHP笔记之面向对象(3)

使用php的重载技术,上述代码修改为:

PHP笔记之面向对象(3)则结果是:PHP笔记之面向对象(3)

属性重载

PHP笔记之面向对象(3)

以上,4个方法,被称为“魔术方法”;

__GET($属性名):

在对一个对象的不存储的属性进行“取值”的时候,会自动调用的方法;

我们其实是可以使用该方法来对这种“意外”情况进行某种特别的处理。

其中,该方法可以带一个形参,表示这个要对之取值的不存在的属性名(字符串);

PHP笔记之面向对象(3)

__SET($属性名,值):

当对一个对象的不存在的属性进行“赋值”的时候,就会自动调用这个内部的魔术方法;

它有2个形参,分别代表要对不存在的属性进行赋值的时候的“属性名”和“属性值”;

 

这个方法,结合__GET方法,往往可以使我们定义的类,就有一种“可方便扩展属性”的特性。

即:类(或对象)的属性,可以更为方便*,如下所示:

PHP笔记之面向对象(3)

__ISSET($属性名):

当对一个对象的不存在的属性进行isset()判断的时候,就会自动调用内部方法:__isset();

用法:

$v1 = isset($对象 -> 不存在的属性); // 此时就会调用这个对象的所属类中的魔术方法:__isset()

PHP笔记之面向对象(3)

PHP笔记之面向对象(3)

__UNSET($属性名):

当对一个对象的不存在的属性进行unset()销毁操作的时候,就会自动调用内部方法:__unset()

PHP笔记之面向对象(3)

方法重载

当对一个对象的不存在的实例方法进行“调用”的时候,会自动调用类中的__call()这个魔术方法;

当对一个类的不存在的静态方法进行“调用”的时候,会自动调用类中的__callstatic()这个静态魔术方法;

基本应用实例:

PHP笔记之面向对象(3)

改为:

PHP笔记之面向对象(3)

利用php的重载技术,实现通常的“方法重载”:

PHP笔记之面向对象(3)

以下为测试代码:

PHP笔记之面向对象(3)

接口(interface)技术

什么是接口?

PHP笔记之面向对象(3)   PHP笔记之面向对象(3)

PHP笔记之面向对象(3)

接口(interface)定义形式:

PHP笔记之面向对象(3) PHP笔记之面向对象(3)

PHP笔记之面向对象(3)

为什么需要接口?

PHP笔记之面向对象(3)

使用形式:

PHP笔记之面向对象(3)

PHP笔记之面向对象(3)

PHP笔记之面向对象(3)

类和接口的大总结

PHP笔记之面向对象(3)

PHP笔记之面向对象(3)