PHP 接口和抽象类的定义 与区别

在PHP中,抽象类和接口都用于定义一种规范,但它们之间有明显的区别:

接口(Interface):
  • 只能定义公共的方法,这些方法不能包含任何实现。
  • 一个类可以实现一个或多个接口。通过使用implements关键字并列多个接口来实现。
  • 接口定义了一种contract(契约),实现了接口的类必须实现接口中的所有方法。
  • 接口不能包含属性,除了const定义的常量。
phpinterface MyInterface {
    public function method1();
    public function method2();
}

class MyClass implements MyInterface {
    public function method1() {
     // 实现
    }
    public function method2() {
      // 实现
    }
}
抽象类(Abstract Class):
  • 可以定义抽象方法,这些方法不能包含实现,需要在子类中实现。
  • 可以定义具体方法,这些方法可以包含实现。
  • 抽象类不能被实例化,只能被继承。
  • 抽象类是一个不能被直接实例化的类,它的目的是为了提供一个可以被子类继承的公共接口。
phpabstract class MyAbstractClass {
    public function concreteMethod() {
    // 实现
    }

    abstract public function abstractMethod();
}

class MyConcreteClass extends MyAbstractClass {
    public function abstractMethod() {
    // 实现
    }
}
区别概括:
  • 接口定义了一套规则,必须被实现。
  • 抽象类定义了一套规则,可以部分被实现(抽象方法子类来实现),还可以包含自己的实现。
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值