PHP抽象类和接口是什么意思? 这些的区别是什么? 这里介绍一下PHP抽象类和接口的区别。 具体细节如下。 希望文章能对大家有帮助。
抽象类(abstract class )和接口(interface )是面向对象的重要概念。 他们很相似,都定义了实现的方法,但又有不同的使用场景。 有关PHP抽象类和接口的区别,请参见以下示例:
接口(Interface ) ——定义行为
抽象类(Abstract Class ) ——实现行为
具体类(class ) ——执行行为
一.接口
接口定义函数的规范,声明所需的函数和常量,但不能指定实现方法。 接口就像特定类的方法的规范。
接口定义了引发某个行为所需的方法、方法名称。 然后,允许具体的类来实现这些方法。
请注意,接口类不能定义类成员。 定义的方法必须存在于实现的类中。
接口名称
{
函数方法1 (;
函数方法2 (;
}
//实现接口
类名称implements接口名称
{
方法1 ();
方法2 ();
}
二.抽象类
抽象类是实例化的类,只能用作其他类的基类。 例如,您可以编写有关读的抽象类,以电子方式阅读或用纸阅读,然后继承读抽象类。
abstractclass类名
{
各种方法
}
抽象类可以确保一致性。 任何派生类都必须实现从其抽象类中继承所有抽象方法,因此如果不实现就会出现错误。
我应该使用抽象类吗? 还是接口?
这是个问题
*创建类模型时,密切相关的对象将采用此模型并使用抽象类。 如果模型被不太相关的对象采用,请使用界面。
*如果希望特定的class从多个源继承行为,请使用接口。 php类可以继承多个接口,但不能继承多个抽象类。
*如果所有类共享公共行为实现,则使用抽象类在其中实现行为。 首先在子类中继承抽象类,继承的子类可以实现原行为。
(_______拆下
事物的出现,总是有其出现的理由(需求)!
但是,事物的生存,需要适应性(灵活性)!
比如长颈鹿,脖子长,这是抽象的概念;
吃草(非肉食性动物的特征,界面)。
因此,当需要描述长颈鹿时,可以用界面(非肉食性动物)和抽象(脖子长)方法来定义。
而且,具体是什么种类/或颜色的长颈鹿,怎么吃草,这就是具体的种类。
PHP接口类
首先看界面,决定界面的类,界面类:
namespacefrontendmodels;
界面测试界面
{
publicfunctioncloud (;
publicfunctionsky (;
publicstaticfunctioncolor ($ color;
}
在PHP中,接口只能定义方法(或静态方法),但不能实现特定的方法。 用PhpStorm写具体的方法会提示错误。 接口只需严格定义需要实现的方法,并写出要实现的方法即可,无需具体实现或定义成员变量。
使用接口:
namespacefrontendmodels;
classtestimplementstestinterface
{
publicfunctioncloud (
{
echo'Cloud…. ';
}
publicfunctionsky (
{
}
//phpfensi.com
publicstaticfunctioncolor ($ color ) {
}
}
要继承接口类,必须实现接口定义中的每个方法。 如果不实现,则会发生错误。 这就是PHP的接口,必须严格定义要实现的方法,并在子类中实现。
PHP抽象类
定义抽象类:
abstractclassTestabstract
{
公共$ abstract=' abstract ';
abstractfunctionhehe (;
publicfunctionhehe2(
{
echo'hehe2';
}
}
这里有两种方法。 一个用abstract修饰。 这样写意味着该方法必须由子类实现,但只能定义不能在抽象类中具体实现。 一种是普通的成员方法,如果有具体的实现,子类也会被重写。
classabextendsTestabstract
{
publicfunctionhehe (
{
echo'hehe ';
}
}
子类继承抽象类,并且只实现抽象类中定义的抽象方法,抽象类可以定义成员变量,但不能使用接口。