Maison >développement back-end >Problème PHP >Quelle est la différence entre une classe abstraite et une interface en php
Différences : 1. Les classes abstraites peuvent avoir des attributs, des méthodes ordinaires et des méthodes abstraites, mais les interfaces ne peuvent pas avoir d'attributs, de méthodes ordinaires et peuvent avoir des constantes 2. Les classes abstraites sont déclarées avant la classe avec le mot-clé abstract ; , et have Class est déclaré comme une classe, et l'interface est déclarée avec interface, mais elle ne peut pas être déclarée avec class, car l'interface n'est pas une classe.
Recommandé : "Tutoriel vidéo PHP"
Pour le développement orienté objet, les classes abstraites et les interfaces C'est plus difficile à comprendre. L'article suivant vous présentera la différence entre les classes abstraites et les interfaces en PHP. Il a une certaine valeur de référence. Les amis dans le besoin peuvent s'y référer. J'espère qu'il sera utile à tout le monde.
Classe abstraite : elle est basée sur une classe. C'est une classe en soi et ne peut pas être directement instanciée dans la classe. Semblables aux modèles, après spécification, les sous-classes peuvent implémenter des fonctions détaillées.
Interface : Principalement basée sur les spécifications de méthodes, un peu comme les méthodes abstraites dans les classes abstraites, sauf qu'elle est plus indépendante que les méthodes abstraites. Une classe peut être combinée pour former une nouvelle classe en combinant plusieurs méthodes.
La différence entre les classes abstraites et les interfaces en php
1 Les classes abstraites peuvent avoir des attributs, des méthodes communes et des méthodes abstraites, mais les interfaces ne peuvent pas avoir d'attributs, de méthodes communes. , et peut Il y a des constantes
2. Il peut ne pas y avoir de méthodes abstraites dans les classes abstraites, mais il doit y avoir des méthodes "abstraites" dans les interfaces
3 Il y a des différences de syntaxe
.4. Classes abstraites Utilisez le mot-clé abstract pour déclarer avant la classe, et la classe est déclarée comme une classe. L'interface est déclarée avec interface, mais ne peut pas être déclarée avec class, car l'interface n'est pas une classe.
5. La méthode abstraite d'une classe abstraite doit être déclarée avec abstract, mais l'interface n'a pas besoin de l'être
6. Une classe abstraite utilise le mot-clé extends pour permettre à la sous-classe d'hériter. la classe parent. Les classes implémentent des méthodes abstraites détaillées. L'interface utilise des implémentations pour permettre aux classes ordinaires d'implémenter des méthodes détaillées de l'interface dans la classe, et l'interface peut implémenter plusieurs méthodes à la fois. Utilisez des virgules pour séparer chaque interface
Classe abstraite :
abstract class ShopProductWriter { protected $product = []; /** * 抽象类中可以定义普通方法 */ public function addProduct($shopProduct) { $this->product = $shopProduct; } /** * 定义一个抽象方法,只有方法声明,没有方法实现 */ abstract public function write(); }
class XmlProductWriter extends ShopProductWriter { /** * 任何继承自抽象类的类都必须实现所有的抽象方法 */ public function write() { echo 'XmlProductWriter'; } }
Interface :
interface Price { /** * 只有方法声明,没有方法实现 */ public function getPrice(); }
class ShopProduct implements Price { protected $price; public function getPrice() { // TODO: Implement getPrice() method. return $this->price; } }
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!