您的位置 首页 php

快学php5面向对象之接口与多态

前面已经写了几篇关于php5面向对象的文章,在头条里也可以一边看看新闻,一边学习更多的知识。

interface接口的定义与规范

  • 接口(interface)是抽象方法和静态常量定义的集合。

  • 接口是一种特殊的 抽象类 ,这种抽象类中只包含抽象方法和静态常量。

  • 接口中没有其它类型的内容。

接口中的抽象方法 ,在接口中只能有抽象方法

接口中抽象方法的修饰和访问权限

在接口中的抽象方法只能是 public 的,默认也是 public 权限。 并且不能设置成 private 或者 protected 类型。

实现接口

  • 类实现接口要使用 implements 。

  • 类实现接口要实现其中的抽象方法。

  • 一个类可以实现多个接口。

大部分的书说,这样是为了实现 PHP 的多继承。为什么呢? PHP5 是单继承的,一个类只可以继承自一个父类。接口可以实现多个,这样就是多继承了。

实现多个接口

一个类可以实现多个接口。只要使用 , 号将多个接口链接起来就可以。

class Admin implements User, Administrator {}

接口的继承

  • 一个接口可以继承自另外的接口。

  • PHP5 中的类是单继承,但是接口很特殊。 一个接口可以继承自多个接口。

  • 一个接口继承其它接口时候,直接继承父接口的静态常量属性和抽象方法。

在 PHP5 中,接口是可以继承自另外一个接口的。这样代码的重用更有效了。

要注意只有接口和接口之间使用继承关键字 extends。

类实现接口必须实现其抽象方法,使用实现关键字 implements。

原始类型的类型判断

PHP 中提供了一些函数,来判断数值的类型。我们可使用 is_numeric()。判断是否是一

个数值或者可转换为数值的 字符串

其它相关的还有 is_bool()、 is_int()、 is_float()、 is_integer()、 is_numeric()、 is_string()、

is_array() 和 is_object()。

类型提示保障数据安全

  • 为了避免对象类型不规范引起的问题, PHP5 中引入了类型提示这个概念。

  • 在定义方法参数时,同时定义参数的对象类型。

  • 如果在调用的时候,传入参数的类型不对会报错。这样保证了数据的安全性。

  • 建议在定义方法参数时,要使用类型提示。

  • 如果类型不是对象,要采用代码进行类型建议,以增强安全性。

PHP5 中的 多态

多态这个概念,在 Java 中指的是变量可以指向的对象的类型,可是变量声明类型的子 类。对象一旦创建,它的类型是不变的,多态的是变量。

在 PHP5 中,变量的类型是不确定的,一个变量可以指向任何类型的数值、字符串、对 象、资源等。我们无法说 PHP5 中多态的是变量。

我们只能说在 PHP5 中,多态应用在方法参数的类型提示位置。

  • 一个类的任何子类对象都可以满足以当前类型作为类型提示的类型要求。

  • 所有实现这个接口的类,都可以满足以接口类型作为类型提示的方法参数要求。

  • 简单的说,一个类拥有其父类、和已实现接口的身份。

instanceof 运算符

在 PHP5 中,通过方法传递变量的类型有不确定性。

于是我们很难判断,一些操作是否可以运行。

  • 使用 instanceof 运算符,可以判断当前实例是否可以有这样的一个形态。

  • 当前实例使用 instanceof 与当前类,父类(向上无限追溯),已经实现的接口比较时, 返回真。

  • 代码格式 实例名 instanceof 类名

简单工厂模式

  • 简单工厂模式是一种比较简单的设计模式,也是我们常用的设计模式。

  • 使用简单工厂模式,能够根据不同的参数,使用不同的工厂,创建不同的对象。

  • 简单工厂模式是类的创建模式,又叫做静态工厂方法(Static Factory Method)模式。

  • 简单工厂模式是由一个工厂类根据传入的参量决定创建出哪一种产品类的实例。

大家如果愿意学习的,可以自己写一些代码来深入了解php的面向对象。

文章来源:智云一二三科技

文章标题:快学php5面向对象之接口与多态

文章地址:https://www.zhihuclub.com/149142.shtml

关于作者: 智云科技

热门文章

网站地图