Home  >  Article  >  Backend Development  >  What is the difference between php abstract class and interface

What is the difference between php abstract class and interface

青灯夜游
青灯夜游Original
2021-05-12 17:41:262575browse

Difference: 1. The keyword of interface is implements, and the keyword of abstract class is extends; 2. Interface cannot declare member variables, abstract class can; 3. Interface does not have constructor, abstract class does; 4. Interface method The default is public type, abstract class is not; 5. A class can implement multiple interfaces at the same time and can only inherit from one abstract class.

What is the difference between php abstract class and interface

The operating environment of this tutorial: windows7 system, PHP7.1 version, DELL G3 computer

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, the 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. 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, and 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.

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

Recommended learning: "PHP Video Tutorial"

The above is the detailed content of What is the difference between php abstract class and interface. 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