抽象接口 php,[PHP]抽象类与接口

抽象类是一种特殊的类, 接口是一种特殊的抽象类, 而多态就要使用到抽象类或是接口

抽象类

什么是抽象方法?

定义:在一个类中,没有方法体的方法就是抽象方法(就是一个方法没有使用{}而直接使用分号结束)

abstract function test(); //抽象方法 function test(){ //有方法体,但方法体为空的 }

如果一个方法是抽象方法,就必须使用abstract修饰为什么要使用抽象方法?

什么是抽象类? 如果一个类中,有一个方法是抽象的则这个类就是抽象类

如果一个类是抽象类,则这个类必须要使用abstract修饰

抽象类是一种特殊的类,就是因为一个类中有抽象方法,其他不变。也可以在抽象类中声明成员属性,常量,非抽象的方法。

抽象类不能实例化对象(不能通过抽象类去创建一个抽象类的对象)

//普通的类class 类名{ }// 抽象类abstract class 类名 { } abstract class Demo{ var a; abstract function fun1(); function fun2() { }}

抽象类的作用: 要想使用抽象类,就必须使用一个类去继承抽象类,而且要想使用这个子类,也就是让子类可以创建对象,子类就必须不能再是抽象类,子类可以重写父类的方法(给抽象方法加上方法体)。抽象方法中的方法没有方法体, 子类必须实现这个方法 (父类中没写具体的实现, 但子类必须有这个方法名)

列用抽象类,可以定义一些规范,让子类按这些规范去实现自己的功能

接口 接口是一种特殊的抽象类, 抽象类又是一种特殊的类

接口和抽象类是一样的作用

抽象类提供了具体实现的标准,而接口则是纯粹的模版。接口只定义功能,而不包含实现的内容。接口用关键字 interface 来声明。

因为PHP是单继承的, 如果使用抽象类,子类实现完抽象类就不能再去继承其它的类了。如果既想实现一些规范, 又想继承一个其他类。就要使用接口

声明方式

interface 接口名{ const 常量名 = 常量值; //接口中的属性必须为常量 function 函数名();}echo 接口名::常量名; interface Demo{ const HOST = "localhost"; function fun();}echoDemo::HOST; //输出为localhost

接口和抽象类的对比 作用相同,都不能创建对象, 都需要子类去实现

接口的声明和抽象类不一样

接口被实现的方式不一样

接口中的所有方法必须是抽象方法,只能声明抽象方法(而且不需要使用abstract修饰)

接口中的成员属性,只能声明常量,不能声明变量

接口中的成员访问权限 都必须是public, 抽象类中最低的权限protected

使用一个类去实现接口, 不是使用extends关键字, 而是使用implements这个词 如果子类是重写父类接口中抽象方法,则使用 implements : 类–接口, 抽象类—接口 implements 。接口—接口 extends

使用 implements 的两个目的

1. 可以实现多个接口 ,而 extends 词只能继承一个父类

2. extends 和 implements 两个可以同时使用

注意: 可以使用抽象类去实现接口中的部分方法

如果想让子类可以创建对象,则必须实现接口中的全部抽象方法

可以定义一个接口去继承另一个接口

一个类可以去实现多个接口(按多个规范去开发子类), 使用逗号分隔多个接口名称

一个类可以在继承父类的同时,去实现一个或多个接口(先继承,再实现)

多态

多态是面向对象的三大特性之一,是面向对象设计的重要特性。它展现了动态绑定(dynamic binding)的功能,也称为同名异式”(Polymorphism)。多态的功能可让软件在开发和维护时,达到充分的延伸性(extension)。事实上,多态最直接的定义就是让具有继承关系的不同类对象,可以对相同名称的成员函数调用,产生不同的反应效果。

以下是关于使用多态的一个 Demo :

head>

本条技术文章来源于互联网,如果无意侵犯您的权益请点击此处反馈版权投诉

本文系统来源:php中文网

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值