php编写一个抽象类具,PHP抽象类和接口之间的区别

本文介绍了面向对象编程中的抽象类和接口,包括封装、继承和多态性的概念。抽象类用于提取类的共性部分,提供了一种避免代码重复的方式,而接口则强制实现特定方法,确保类遵循特定规范。在PHP中,一个类可以实现多个接口,但只能继承一个抽象类。两者的主要区别在于抽象类可以包含非抽象方法,而接口只能有抽象方法。了解这些概念有助于提升代码的可维护性和扩展性。
摘要由CSDN通过智能技术生成

nUrYR3.jpeg

1)概念

三个面向对象的概念: 封装,继承和多态性

封装属性和方法是一个类.

由另一个类复制的类的属性和方法被继承. PHP中的任何类都可以继承,并且继承的属性和方法可以由子类重新定义. 这是多态性.

抽象类和方法:

所谓的抽象方法是一个只有名称的空“函数”,抽象方法必须是一个空方法.

所谓的抽象类是包含抽象方法的类,抽象类也可以包含普通方法.

由于抽象方法必须是一个空方法,因此任何子类都必须重新定义抽象方法的具体含义,然后才能实例化它们.

仅包含抽象方法的特殊抽象类.

换句话说,接口类中不允许使用通用方法和属性.

2)案例研究

1.php接口类: 接口

实际上,它们的作用非常简单. 当许一起开发项目时,他们可能会调用其他人编写的某些类. 然后您会问,我怎么知道如何实现他的名字的某个功能?是的,这次是php接口类. 当我们定义接口类时,其中的方法是必须实现的子类,例如:

用于复制代码的代码如下:

iYJFBv.jpeg

界面商店

{

公共功能buy($ gid);

公共功能sell($ gid);

公共功能视图($ gid);

}

我声明一个shop接口类并定义三个方法: buy,sell和view,那么所有继承该类的子类都必须实现这三个方法之一. 如类没有实现这些,则它将无法运行. 实际上,接口类是直截了当的,它是一个类的模板,一个规则类,如果您属于此类,则必须遵循我的规则,少一个是行不通的,但是具体如何做,我不在乎,是你这样的事情:

用于复制代码的代码如下:

BaseShop类实现Shop

{

公共功能buy($ gid)

{

echo('您购买了ID为'. $ gid. '的产品. );

}

公共功能sell($ gid)

202115200.png

{

echo('您出售了ID为'. $ gid. '的产品. )

}

公共功能视图($ gid)

{

echo('您检查了ID为'. $ gid. '的产品);

}

}

您考虑在大型项目中拥有一个接口类是多么方便,这样您就不必问其他人了,函数的方法名是什么,当然,如果您这样,我别无选择.

结论: 接口类是类的领导者,指示方向,子类必须完成其指定的方法.

2.php抽象类: 抽象

实际上,抽象类和接口类非常相似. 记住要看到这样的句子php 抽象类和接口的区别,其中抽象类提取类图像的一部分. 这句话看起来很有趣. 实际上,它告诉了抽象类的真相. 抽象类的作用是,当发现您在许多类中使用许多方法时,您会反复编写,那么您可以考虑使用抽象类,您可能会说: “我无法在每个可以公开的类上重写一个类. 实例化一个公共类并调用相同的方法. ”实际上,抽象类所做的工作就是这样,但是他为您节省了实例化步骤,使您喜欢此类的直接Calling方法同样方便,并且您也可以覆盖此方法. :

用于复制代码的代码如下:

抽象类BaseShop

{

20ba4c6e42e77cc5e92cd3bdc6c75b41.png

公共功能buy($ gid)

{

echo('您购买了ID为'. $ gid. '的产品. );

}

公共功能sell($ gid)

{

echo('您出售了ID为'. $ gid. '的产品. )

}

公共功能视图($ gid)

{

echo('您检查了ID为'. $ gid. '的产品);

}

}

BallShop类扩展了BaseShop

{

834220ba73e6d3b734c1c58ebe62ed5a.png

var $ itme_id = null;

公共函数__construct()

{

$ this-> itme_id = 2314;

}

公共函数open()

{

$ this-> sell($ this-> itme_id);

}

}

这里是一个例子. 像上面一样,我定义了一个商店类,提取了所有类似的部分,进行了购买(购买),出售(出售),查看(查看),这些方法在抽象类中实现,然后继承它的子类自动获取这些类. 方法,子类做自己独特的事情,引入代码重复,并提高可重用性.

结论: 抽象类是一种具有许多服务的服务提供者. 您不必使用它. 您可以在需要时使用它. 如果您对服务不满意,可以自己做.

3)他们的区别:

1. 抽象类中可以有非抽象方法,而接口中只能有抽象方法!

2. 一个类可以继承多个接口,一个类只能继承一个抽象类!

3. 该接口由Implements关键字使用php 抽象类和接口的区别,而抽象类则由extends关键字继承!

4. 成员变量(包括类静态变量)不能在接口中声明,但是可以声明类常量. 可以在抽象类中声明各种类型的成员变量,以实现数据封装. (此外,必须将JAVA接口中的成员变量声明为公共静态最终类型)

5. 接口没有构造函数,抽象类可以有构造函数.

6. 接口中的方法默认情况下是公共的,抽象类中的方法可以使用private,protected和public进行修改.

本文来自电脑杂谈,转载请注明本文网址:

http://www.pc-fly.com/a/jisuanjixue/article-232800-1.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值