Home  >  Article  >  Backend Development  >  Differences and choices of abstract classes and interfaces in PHP

Differences and choices of abstract classes and interfaces in PHP

不言
不言Original
2018-04-08 15:12:381075browse

This article introduces the differences and choices of abstract classes and interfaces in PHP. Now I share it with you. Friends in need can refer to it

Differences:

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


[php] view plain copy


<?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. The interface does not have a constructor, but the abstract class can have a constructor.

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. (The main difference is that abstraction can only be inherited once, while interface interface can be inherited from multiple )

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

  • If behavior must be inherited from multiple sources, use interfaces.

  • If you know that all classes will share a common behavior implementation, use an abstract class and implement the behavior in it.


  • ##The main difference is that abstraction can only have one inheritance, while interface Interfaces can be inherited from multiple sources

Related recommendations:

The concepts and differences between php abstract classes and interfaces


The above is the detailed content of Differences and choices of abstract classes and interfaces in PHP. For more information, please follow other related articles on the PHP Chinese website!

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn