php中abstract和interface有什么区别

avatar
作者
筋斗云
阅读量:0

在PHP中,abstract和interface是两种不同的概念和用法。

  1. abstract(抽象类):
  • 抽象类是用于继承的类,不能被实例化。
  • 抽象类可以包含抽象方法和非抽象方法。
  • 抽象方法是没有具体实现的方法,只有方法的声明。
  • 子类继承抽象类后,必须实现抽象类中的所有抽象方法。
  • 抽象类可以包含属性、常量和非抽象方法的具体实现。

示例代码:

abstract class Animal {     protected $name;          abstract public function sound();          public function setName($name) {         $this->name = $name;     } }  class Cat extends Animal {     public function sound() {         return 'Meow';     } }  $cat = new Cat(); $cat->setName('Kitty'); echo $cat->sound(); // Output: Meow 
  1. interface(接口):
  • 接口是一种约定,用于定义类应该实现的方法。
  • 接口中只能包含抽象方法和常量,不能包含属性和方法的具体实现。
  • 类实现接口后,必须实现接口中定义的所有方法。
  • 一个类可以实现多个接口。

示例代码:

interface Animal {     public function sound(); }  interface Pet {     public function getName(); }  class Cat implements Animal, Pet {     public function sound() {         return 'Meow';     }          public function getName() {         return 'Kitty';     } }  $cat = new Cat(); echo $cat->sound(); // Output: Meow echo $cat->getName(); // Output: Kitty 

综上所述,abstract是用于类的继承和实现的,可以包含具体的方法实现和属性,而interface是用于定义类应该实现的方法,只能包含抽象方法和常量。

广告一刻

为您即时展示最新活动产品广告消息,让您随时掌握产品活动新动态!