当前位置:首页 > 日记 > 正文

PHP接口和抽象类用示例加以说明。

PHP接口和抽象类用示例加以说明。
1。抽象类抽象类

1。抽象类是指在类之前添加抽象关键字的类和抽象方法的存在(抽象关键字被添加到类方法函数关键字)。

2。抽象类不能被直接实例化。一个方法定义唯一的(或部分实现)在抽象类的子类,子类可以继承抽象类的抽象类实现所有的抽象方法的实现。

三.如果子类需要实例化,前提是它在抽象类中实现所有抽象方法。如果子类没有在抽象类中实现所有抽象方法,子类也是抽象类。必须在向类添加抽象关键字之前。

复制代码代码如下所示:
一个抽象类
{
抽象类可以定义变量。
保护值= 0美元;
私人value2 = 1美元;
公共值= 2美元;
*也可以是非抽象方法定义。
公共功能my_print()
{
你好,世界;
}

*在大多数情况下,抽象类至少包含一个抽象方法。
*您可以声明一个抽象方法,如一个公共类方法,但以一个分号结束,而不是一个方法体,也就是说,抽象方法不能在抽象类中实现,也就是说,没有函数体{一些代码}。
* /
摘要保护功能abstract_func1();
摘要保护功能abstract_func2();
}
抽象类B扩展了
{
公共功能abstract_func1()
{
回声的abstract_func1班 / 的实施;
}
写在Zend Studio / * 8在错误。
/ /摘要保护功能abstract_func2();
}
类扩展B
{
公共功能abstract_func2()
{
回声实施abstract_func2班 / ;
}
}
4。如果子类B继承了抽象方法如下,abstract_func()不落实:

复制代码代码如下所示:
类B扩展{ };
然后程序将有以下错误:

复制代码代码如下所示:
致命错误:B类包含1个抽象方法,因此必须声明
5、如果B实现抽象方法abstract_func(),然后abstract_func访问控制()方法B不比abstract_func访问控制更严格的()中的一种,也就是说:

(1)如果abstract_func()在一个声明为公共的,那么abstract_func宣言()B不仅是公众,不受保护或私有

(2)如果abstract_func()在一个声明为受保护的,那么abstract_func宣言()B可以是公共的或受保护的,但不能私有。

(3)如果abstract_func()在一个被声明为private,嘿嘿,它不能被定义为private!(致命错误:抽象函数::abstract_func()不能被声明为私有的)

两。接口

1。抽象类提供了具体的实施标准,而接口是一个纯粹的模板,接口只定义的功能和不包含的内容实现,接口与接口中声明的关键字。

2.interface完全是抽象的。它只能声明方法,只能声明公共方法,不能声明私有和受保护的方法。它不能定义方法体或声明实例变量。然而,接口可以声明常量变量。但是把常数变量接口违反其作为界面作用的目的,同时也混淆了接口和类的不同的价值观。如果你真的需要它,你可以把它放在相应的抽象类或类。

复制代码代码如下所示:
IA界面
{
const阿瓦尔= 3;
公共功能iafunc1();
公共功能iafunc2();
}
回声是:由;
三.实现接口的任何类都需要实现接口中定义的所有方法。

复制代码代码如下所示:
类E实现IA
{
公共功能iafunc1(){ echo在iafunc1 ;}
公共功能iafunc2(){ echo在iafunc2 ;}
}
否则,类必须声明为抽象的。

复制代码代码如下所示:
抽象类E实现了{ }
4。一个类可以声明实现一个接口使用implements关键字。这样做后,对接口的具体实施过程是作为一个抽象类,只包含一个抽象方法相同。一个类可以继承父类的同时实现多个接口。延伸条款应在实现clause.php只支持从父母继承,所以extends关键字只能跟着一类的名称。

复制代码代码如下所示:
接口IB
{
公共功能ibfunc1();
公共功能ibfunc2();
}
类D扩展了一个实现IA、IB
{
公共功能abstract_func1()
{
回声的abstract_func1班 / 的实施;
}
公共功能abstract_func2()
{
回声实施abstract_func2班 / ;
}
公共功能iafunc1(){ echo在iafunc1 ;}
公共功能iafunc2(){ echo在iafunc2 ;}
公共功能ibfunc1(){ echo在ibfunc1 ;}
公共功能ibfunc2(){ echo在ibfunc2 ;}
}

类d扩展b实现IA、IB
{
公共功能abstract_func1()
{
家长::abstract_func1();
回声重写abstract_func1班 / ;
}
公共功能abstract_func2()
{
回声实施abstract_func2班 / ;
}
公共功能iafunc1(){ echo在iafunc1 ;}
公共功能iafunc2(){ echo在iafunc2 ;}
公共功能ibfunc1(){ echo在ibfunc1 ;}
公共功能ibfunc2(){ echo在ibfunc2 ;}
}
5。接口不能实现另一个接口,但您可以继承多个接口。

复制代码代码如下所示:
接口ic扩展IA,IB }
F类实现ic
{
公共功能iafunc1(){ echo在iafunc1 ;}
公共功能iafunc2(){ echo在iafunc2 ;}
公共功能ibfunc1(){ echo在ibfunc1 ;}
公共功能ibfunc2(){ echo在ibfunc2 ;}
}
三、抽象类与接口的异同

1。同一点:

(1)两者都是抽象类,都不能实例化。

(2)接口实现类和抽象类的子类必须实现已声明的抽象方法。

2。不同点:

(1)接口需要实现,实现是使用的,抽象类需要继承和扩展。

(2)一个类可以实现多个接口,但是一个类只能继承一个抽象类。

(3)接口强调具体功能的实现,抽象类强调关系。

(4)虽然该接口的实现类和抽象类的子类必须实现相应的抽象方法的实现是不同的。每个接口中的方法是抽象方法,这是唯一的声明(声明,没有方法体),和实现类必须实现抽象类的子类可以。实施选择。这种选择具有两方面的含义:一)在抽象类中的所有方法都是抽象的,只有那些抽象的有一顶王冠是抽象的,和子类必须实现。那些没有抽象方法必须在抽象类中定义的方法;b)抽象类的子类继承它,非抽象方法可以直接继承,也可以被覆盖;可以选择实现的抽象方法,可以保留它的子类来实现,但是它也必须声明抽象类,它是一个抽象类,当然它不能被实例化。

(5)抽象类是接口与类之间的中介,抽象类在接口和类中起着重要作用,一方面抽象类是抽象的。它可以声明抽象方法来标准化子类必须实现的函数。另一方面,它还可以定义默认的方法体,直接使用或覆盖子类。此外,它还可以为继承使用的子类定义自己的实例变量。

(6)在接口的抽象方法不能被添加或添加到摘要关键词,隐隐的方法是抽象方法,以及最终的关键词不能添加防止抽象方法的继承,抽象类的抽象方法必须添加抽象声明在抽象方法抽象方法。

(7)在接口的抽象方法是公共的,只能是公共的,不可修改的私人保护剂。在抽象类中的抽象方法可以保护公众,修改,而不是私人的。

三.接口中的应用

(1)类和类需要协调通过特定的接口而不关心它是如何实现的。

(2)作为一个可以实现特定功能的符号,它也可以是任何接口方法的纯标识。

(3)您需要将一组类看作一个类,而调用方只通过接口连接到这一组类。

(4)需要执行一些具体的职能,这些职能之间可能没有联系。

4。抽象类的应用

总之,当您需要统一的接口,以及实例变量或默认方法时,您可以使用它:

(1)定义了一组接口,但是它们不想强制每个实现类实现所有接口。

(2)在某些情况下,只有纯接口不能满足类与类之间的协调,抽象的中介效应很好地满足这一点。

(3)一套协调的方法是标准化的。其中一些是通用的,独立于状态,可以不使用子类实现,而另一些则需要子类根据它们的具体状态实现特定的功能。

相关文章

如何设置、修改、更换PowerPoint20

如何设置、修改、更换PowerPoint20

修改,如何设置,背景,电脑软件,经常在网上下载一些PPT模板不适合你的胃口,你想修改背景图片,但是你不知道从哪里开始,有时候你去word联盟访问。本章详细讲解了PowerPoint中背景图片的设置、添加和修改。方法简单,易学易用。 1。在PowerPoint中添…

vsmain.exe过程的意义是什么

vsmain.exe过程的意义是什么

意义,过程,电脑软件,vsmain,exe,评论:对vsmain.exe工艺介绍 进程文件:vsmain或vsmain.exe 进程名称:McAfee VirusScan主控制台 过程类别:安全风险的过程 英文描述: vsmain.exe是一个过程,属于McAfee VirusScan互联网安全应用提供了一个网络安全…

Win8系统连接虚拟打印机的安装和使

Win8系统连接虚拟打印机的安装和使

系统,连接,安装,虚拟,使用教程,点评:今天与大家分享关于Win8系统连接虚拟打印机的安装和使用教程! 1、进入Win8桌面后,按下Windows + X键,打开系统菜单,并从弹出菜单选择控制面板的;命令: 2。在控制板表面;点击查看设备和打印机; 3、点击在工具按钮…

10个幽默风趣的人物

10个幽默风趣的人物

风趣,幽默,人物,电脑软件,1。在大学的四年里,我一直认为自己是个天才,但我错了,我不是!我是个该死的天才!!!! 在2和1949年9月28日,我被逮捕了。第一天,敌人拷打我,我没有招。第二天,敌人用辣椒水泼了我,我还是没做。第三天,敌人用了美人计,我招了。第四天…

在深入了解了ExtJS和PHP参数之间的

在深入了解了ExtJS和PHP参数之间的

参数,相互作用,电脑软件,ExtJS,PHP,复制代码代码如下所示: HelloWorld Ext.onReady(function(){() 无功requestconfig = { { 网址:'loginserver。php / /请求的服务器地址 参数:{用户名:密码:'zq19890319 'lowkey ',' }, / /请求参数 方法: 回调函…

mysql中文数据无序代码在CMD中的解

mysql中文数据无序代码在CMD中的解

中文,数据,无序,解决方案,代码,我的MySQL默认是UTF8编码,UTF8编码的数据库的建立,使用该程序可以添加中文资料,在新的CMD数据使用SQL语句类似于不正确的字符串值: XB2 xd4'for XE2时在column'title在排1的误差,并用SQL语句的查询计划的新中国…

autoreg.exe的过程是怎样的是autor

autoreg.exe的过程是怎样的是autor

的是,是怎样,过程,电脑软件,autoreg,点评:autoreg.exe是美国机器人产品相关程序。它用于管理产品在线注册 进程文件:autoreg或autoreg.exe 过程名称:美国机器人注册 过程类别:安全风险的过程 英文描述: autoreg.exe是我们机器人产品的一个组成…

js与PHP的交叉值介绍

js与PHP的交叉值介绍

电脑软件,js,PHP,js是PHP语言,是语言的背景,经常出现前后混淆的情况(我这样做了,现在有时做),我的思想被放在背景前作为两个岛,它们是无法跨HTML的,就像一座桥。当你想坐在岛上的变量到另一个岛上,只有在桥的帮助下。 让我做一个小结: 价值1:如何在HTM…

防止页面返回共享的PHP方法

防止页面返回共享的PHP方法

方法,页面,电脑软件,PHP,例如:现在有1, 2,3.3页。希望用户开始访问第一页,然后下一步将看到第二页,在进入第三页之前,用户不能。 后退 u3002let 1和2是相同的页面。在会话中留下痕迹,所以: 1and2.php 复制代码代码如下所示: session_start(); 如果(iss…

Android(Android)系统最初是为摄像头

Android(Android)系统最初是为摄像头

系统,摄像头,最初,电脑软件,Android,智能手机系统中有两个阵营,一个是Android(Android)系统,另一个是苹果iOS系统,但是你知道Android系统最初是为摄像头设计的吗让我看看下面。 前几天,安卓系统创始人鲁宾派了一个采访,说:原来的Android计划是为相…

passrv是passrv.exe-使用

passrv是passrv.exe-使用

电脑软件,passrv,exe,评论:详细的介绍了passrv.exe - passrv过程 进程文件:passrv或passrv.exe 进程名称:熊猫反垃圾邮件服务器服务 过程类别:安全风险的过程 英文描述: passrv.exe是一个熊猫反垃圾邮件模块,属于模块相关的过程,它也被称为以下…

XP无法正确显示当前磁盘的内容,只显

XP无法正确显示当前磁盘的内容,只显

磁盘,显示,只显示,内容,正确,点评:有时在CD-ROM光盘后,使用自动播放或使用我的电脑光盘可以正确显示的光盘内容,光盘总是显示一个CD,这是一个很好的解决方案,你可以尝试运行 计算机安装的是Windows XP操作系统,有时放在光盘CD自动播放后使用或使…