Maison  >  Article  >  développement back-end  >  Quelle est la différence entre la classe abstraite php et l'interface

Quelle est la différence entre la classe abstraite php et l'interface

青灯夜游
青灯夜游original
2021-05-12 17:41:262511parcourir

Différences : 1. Le mot-clé de l'interface est Implements et le mot-clé de la classe abstraite est extends ; 2. L'interface ne peut pas déclarer de variables membres, la classe abstraite le peut ; 3. L'interface n'a pas de constructeur, la classe abstraite en a ; 4. Méthode d'interface La valeur par défaut est de type public, la classe abstraite ne l'est pas ; 5. Une classe peut implémenter plusieurs interfaces en même temps et ne peut hériter que d'une seule classe abstraite.

Quelle est la différence entre la classe abstraite php et l'interface

L'environnement d'exploitation de ce tutoriel : système Windows 7, PHP version 7.1, ordinateur DELL G3

Différence :

1. L'interface est utilisée via le mot-clé Implements. L'utilisation de classes abstraites se fait via le mot-clé extends. Bien entendu, les interfaces peuvent également être héritées via le mot-clé extends.

2. Les variables membres (y compris les variables statiques de classe) ne peuvent pas être déclarées dans l'interface, mais les constantes de classe peuvent être déclarées. Différents types de variables membres peuvent être déclarés dans des classes abstraites pour implémenter l'encapsulation des données. (De plus, les variables membres de l'interface JAVA doivent être déclarées comme type final statique public)

<?php 
abstract class Father {
	function meth1() {
		echo "meth1...<br>";
	}
	abstract function meth2();
	public $var1="var1";
	public static $var2="var2";
	const Var3="Var3";
}
class Son extends Father {
	function meth2() {
		echo "meth2 of Son...<br>";
	}
}
$s=new Son();
echo $s->var1."<br>";
echo Father::$var2."<br>";
echo Father::Var3."<br>";
 
 
Interface IFather {
	//public $iVar1="iVar1";        此处接口定义中不能包含成员变量
	//public static $iVar2="iVar2"; 此处接口定义中不能包含静态变量
	const iVar3="iVar3";
	function iMeth1();
}
Class ISon implements IFather {
	function iMeth1() {
		echo "iMeth1...<br>";
	}
}
$is=new ISon();
echo IFather::iVar3;
?>

3. L'interface n'a pas de constructeur, mais la classe abstraite peut avoir un constructeur.

4. Les méthodes des interfaces sont de type public par défaut, tandis que les méthodes des classes abstraites peuvent être modifiées avec private, protected ou public.

5. Une classe peut implémenter plusieurs interfaces en même temps, mais une classe ne peut hériter que d'une seule classe abstraite.

Classe ou interface abstraite.

  • Si vous souhaitez créer un modèle qui sera adopté par certains objets étroitement liés, vous pouvez utiliser des classes abstraites. Utilisez des interfaces si vous souhaitez créer des fonctionnalités qui seront adoptées par un certain nombre d'objets non liés.
  • Utilisez des interfaces si le comportement doit être hérité de plusieurs sources.
  • Si vous savez que toutes les classes partageront une implémentation de comportement commune, utilisez une classe abstraite et implémentez ce comportement en son sein.

Apprentissage recommandé : "Tutoriel vidéo PHP"

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn