Home  >  Article  >  Backend Development  >  What is the difference between abstract classes and interfaces in PHP

What is the difference between abstract classes and interfaces in PHP

coldplay.xixi
coldplay.xixiOriginal
2021-03-10 17:51:562807browse

Difference: 1. Abstract classes can have attributes and ordinary methods, but interfaces cannot; 2. There may not be abstract methods in abstract classes, but there must be "abstract" methods in interfaces; 3. Syntax: Different; 4. The abstract class is declared before the class with the abstract keyword, and the class is declared as a class. The interface is declared with interface, but cannot be declared with class; 5. The abstract method of the abstract class must be declared with abstract. Interfaces are not required; 6. Abstract classes and interfaces implement detailed methods in different ways.

What is the difference between abstract classes and interfaces in PHP

The operating environment of this tutorial: Windows 7 system, PHP 8 version, DELL G3 computer.

The difference between abstract classes and interfaces in PHP:

Abstract class: is based on a class, which itself is a class, just a Special classes cannot be directly instantiated. Methods and attributes can be defined in the class. Similar to templates, after specification, subclasses can implement detailed functions.

Interface: Mainly based on method specifications, a bit like abstract methods in abstract classes, except that it is more independent than abstract methods. A class can be combined into a new class by combining multiple methods.

The similarities between abstract classes and interfaces:

1. They are both used to declare a certain thing, standardize names and parameters, and form modules. There is no detailed description. Implementation details.

2. Relevant detailed work is implemented through classes.

3. Grammatically, the abstract method of an abstract class is the same as an interface and cannot have a method body, that is, the {} symbol

4. Inheritance can be used. Interfaces can inherit interfaces to form new interfaces, and abstract classes can inherit abstract classes to form new abstract classes.

The difference between abstract classes and interfaces:

1. Abstract classes can have attributes and ordinary methods, but interfaces cannot have attributes and ordinary methods. They can have constants.

2. Abstract classes may not have abstract methods, but interfaces must. There will be "abstract" methods

3. The syntax is different

4. The abstract class is declared before the class with the abstract keyword, and the class is declared as a class, and the interface is declared with interface , but cannot be declared with class, because the interface is not a class.

5. The abstract method of an abstract class must be declared with abstract, but the interface does not need to be

6. An abstract class uses the extends keyword to allow the subclass to inherit the parent class. Classes implement detailed abstract methods. The interface uses implements to allow ordinary classes to implement detailed methods of the interface in the class, and the interface can implement multiple methods at one time. Use commas to separate each interface.

Each feature:

  1. There may not be abstract methods in abstract classes, but classes with abstract methods must be in abstract classes

  2. In abstract classes, even if They are all specific methods and cannot be instantiated. Only by creating a new class to inherit can the instance inherit the class.

  3. Interface allows a class to implement multiple different methods at one time

  4. The interface itself is abstract, but note that it is not an abstract class, because the interface is not a class, but its methods are abstract. Therefore, it is also abstract

Application and combination:

The following code is based on my own thinking and has not been applied in actual development. It's just that this way of writing is a bit strange. Let abstractions and interfaces combine.

1. The combination of abstract classes and interfaces

<?php 
/* 
写此程序源于自己的猜测,想在抽象类里实现某一接口。 
*/
interface work{ 
  public function say(); 
}
abstract class a implements work{ 
  public function showlove(){ 
    echo &#39;love you<br />&#39;; 
  } 
}
class b extends a{ 
  public function say(){ 
    echo &#39;hello, i m in b&#39;; 
  } 
}
$k=new b(); 
$k->say();
/* 
以上程序能正常执行
普通类implements接口后,就变成了抽象类了,这就好像是直接给抽象类增加了一个抽象方法。
*/

2. The combination of interfaces and inheritance

The parent class is an ordinary Class, after the subclass inherits, the interface is implemented in the subclass at the same time.

Question: Does this approach make sense? Is there such an application in actual development?

<?php
interface kk{ 
  public function say(); 
}
class a { 
  public function show(){ 
    echo &#39;我是父类<br />&#39;; 
  } 
}
class b extends a implements kk{ 
  public function say(){ 
    echo &#39;我是继承A类,同时实现say接口的<br />&#39;; 
  }
}
$b=new b(); 
$b->show();//我是父类
$b->say();//我是继承A类,同时实现say接口的

Related video recommendations: PHP programming from entry to proficiency

The above is the detailed content of What is the difference between 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