Home > Article > Backend Development > Analysis of the differences and choices between abstract classes and interfaces in PHP, php abstraction_PHP tutorial
This article analyzes the differences and choices of abstract classes and interfaces in PHP with examples. Share it with everyone for your reference, the details are as follows:
Difference:
1. The interface is used through the keyword implements. The use of abstract classes is through the keyword extends. Of course, interfaces can also be inherited through the keyword extends.
2. Member variables (including class static variables) cannot be declared in the interface, but class constants can be declared. Various types of member variables can be declared in abstract classes to implement data encapsulation. (In addition, member variables in the JAVA interface must be declared as public static final type)
<?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. Interfaces do not have constructors, but abstract classes can have constructors.
4. Methods in interfaces are of public type by default, while methods in abstract classes can be modified with private, protected, or public.
5. A class can implement multiple interfaces at the same time, but a class can only inherit from one abstract class.
Abstract class or interface
1. If you want to create a model that will be adopted by some closely related objects, you can use abstract classes. Use interfaces if you want to create functionality that will be adopted by a number of unrelated objects.
2. If behavior must be inherited from multiple sources, use interfaces.
3. If you know that all classes will share a common behavior implementation, use an abstract class and implement the behavior in it.
Readers who are interested in more PHP-related content can check out the special topics of this site: "Summary of PHP Network Programming Skills", "Introduction Tutorial on PHP Basic Grammar", "Summary of PHP Office Document Skills (including word, excel, access, ppt)", "php date and time usage summary", "php object-oriented programming introductory tutorial", "php string (string) usage summary", "php mysql database operation introductory tutorial" and "php common database operation skills summary" 》
I hope this article will be helpful to everyone in PHP programming.