PHP 面向对象进阶——抽象类&接口&trait

本文详细介绍了PHP中的抽象类、接口和trait。抽象类不能被实例化,子类必须实现其所有抽象方法。接口定义了必须实现的方法,但不提供实现。trait作为代码复用机制,允许类在不继承的情况下共享方法。接口与抽象类的区别在于接口只包含方法,所有方法默认公共,而trait更关注于方法的组合。
摘要由CSDN通过智能技术生成

抽象类(abstract)

先看抽象类的定义,官方文档:

PHP 5 支持抽象类和抽象方法。定义为抽象的类不能被实例化。任何一个类,如果它里面至少有一个方法是被声明为抽象的,那么这个类就必须被声明为抽象的。被定义为抽象的方法只是声明了其调用方式(参数),不能定义其具体的功能实现。

继承一个抽象类的时候,子类必须定义父类中的所有抽象方法;另外,这些方法的访问控制必须和父类中一样(或者更为宽松)。例如某个抽象方法被声明为受保护的,那么子类中实现的方法就应该声明为受保护的或者公有的,而不能定义为私有的。此外方法的调用方式必须匹配,即类型和所需参数数量必须一致。例如,子类定义了一个可选参数,而父类抽象方法的声明里没有,则两者的声明并无冲突。 这也适用于 PHP 5.4 起的构造函数。在 PHP 5.4 之前的构造函数声明可以不一样的。

定义中提到了抽象方法,抽象方法的声明和C语言中的函数声明很相似,不需要实现其功能,抽象方法的实现均在抽象类的子类中进行。

抽象类的语法结构:

abstruct class Class1 {
   

    //普通方法
    public
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值