Maison  >  Article  >  développement back-end  >  Explication détaillée des différences entre les classes et interfaces abstraites PHP et les instances sélectionnées

Explication détaillée des différences entre les classes et interfaces abstraites PHP et les instances sélectionnées

伊谢尔伦
伊谢尔伦original
2017-07-03 09:40:241463parcourir

Différence :

1 L'utilisation de l'interface se fait via le mot clé Implements. L'utilisation de la classe abstraite se fait via le mot-clé extends. Bien entendu, l'interface peut également hériter de via le mot-clé extends.

2. Les variables membres (y compris les variables de classe statiques ) 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 , et le 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.

  • Si vous devez hériter d'un comportement de plusieurs sources, utilisez une interface.

  • 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.

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