


Interfaces and abstract classes in php and the differences between interfaces and abstract classes
In php, the interface abstract class, Final, and Static are quite simple and are useful especially for large-scale website architecture. Today we will look at an article about php. Examples of abstract classes, Final, and Static.
1. Interface
(1) The use of the interface is through the keyword implements
(2) The interface cannot define member variables (including class static variables), but can define constants
(3 ) Subclasses must implement all methods defined by the interface
(4) The interface can only define but not implement the method
(5) The interface has no constructor
(6) The methods in the interface and the class that implements it default They are all of public type
2. Abstract class
(1) The use of abstract class is through the keyword extends
(2) It cannot be instantiated, and you can define methods that subclasses must implement
(3) The subclass must define all abstract methods in the parent class, and the access control of these methods must be the same as that in the parent class (or more relaxed)
(4) If there is an abstract method in a class, then the class Must be defined as an abstract class
(5) Abstract classes can have constructors
(6) Methods in abstract classes can be modified with private, protected, and public.
(7) A class can implement multiple interfaces at the same time, but a class can only inherit from one abstract class.
3. Final class/method
(1) The final class cannot be inherited
(2) The final method cannot be overridden
4. Static class/method
(1) Can not be instanced Classified and directly accessed
(2) Static properties cannot be accessed by objects through the -> operator, and are called using the :: method
<?php # 接口 interface Human{ const TEST_CONST = "test const"; // 定义常量 // public $v; // error,不能定义变量 // static $count; // error,不能定义变量 public function speak(); public function walk(); public function run(); } # 抽象类 abstract class Father implements Human{ public function construct(){ echo "father init n"; } abstract public function walk(); // 抽象方法 public function speak(){ echo "father speak skill n"; } public function run(){ echo "father run skill n"; } } # 非抽象类 class Mother implements Human{ public function construct(){ echo "mother init n"; } # 这里必须实现walk方法 public function walk(){ echo "mother walk skill n"; } public function speak(){ echo "mother speak skill n"; } public function run(){ echo "mother run skill n"; } } class Son extends Father{ public function walk(){ echo "son walk skill. n"; } public function speak($name = ''){ echo "son: ". $name ." speak skill. n"; } # 访问控制必须和父类中一样(或者更为宽松) protected function sport(){ echo "son sport skill. n"; } final public function notTeach(){ echo 'son has not to teach skill'; } } class Daughter extends Mother{ public function run($name = ''){ echo "daughter run skill. n"; } } final class GrandChild extends Son{ # 访问控制必须和父类中一样(或者更为宽松) public function sport(){ echo "GrandChild sport skill. n"; } # Cannot override final method Son::notTeach() // public function notTeach(){} // error } # Class Orphan may not inherit from final class (GrandChild) // class Orphan extends GrandChild{} // error $son = new Son(); $son->speak("Suly"); $daughter = new Daughter(); $daughter->run('Lily'); $grandChild = new GrandChild(); $grandChild->sport();
The difference between abstract classes and interfaces
1. The use of the interface is 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)
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 tutorial: "PHP Tutorial"
The above is the detailed content of Interfaces and abstract classes in php and the differences between interfaces and abstract classes. For more information, please follow other related articles on the PHP Chinese website!

Hot AI Tools

Undresser.AI Undress
AI-powered app for creating realistic nude photos

AI Clothes Remover
Online AI tool for removing clothes from photos.

Undress AI Tool
Undress images for free

Clothoff.io
AI clothes remover

Video Face Swap
Swap faces in any video effortlessly with our completely free AI face swap tool!

Hot Article

Hot Tools

Notepad++7.3.1
Easy-to-use and free code editor

SublimeText3 Chinese version
Chinese version, very easy to use

Zend Studio 13.0.1
Powerful PHP integrated development environment

Dreamweaver CS6
Visual web development tools

SublimeText3 Mac version
God-level code editing software (SublimeText3)

Hot Topics



PHP 8.4 brings several new features, security improvements, and performance improvements with healthy amounts of feature deprecations and removals. This guide explains how to install PHP 8.4 or upgrade to PHP 8.4 on Ubuntu, Debian, or their derivati

Visual Studio Code, also known as VS Code, is a free source code editor — or integrated development environment (IDE) — available for all major operating systems. With a large collection of extensions for many programming languages, VS Code can be c

If you are an experienced PHP developer, you might have the feeling that you’ve been there and done that already.You have developed a significant number of applications, debugged millions of lines of code, and tweaked a bunch of scripts to achieve op

This tutorial demonstrates how to efficiently process XML documents using PHP. XML (eXtensible Markup Language) is a versatile text-based markup language designed for both human readability and machine parsing. It's commonly used for data storage an

JWT is an open standard based on JSON, used to securely transmit information between parties, mainly for identity authentication and information exchange. 1. JWT consists of three parts: Header, Payload and Signature. 2. The working principle of JWT includes three steps: generating JWT, verifying JWT and parsing Payload. 3. When using JWT for authentication in PHP, JWT can be generated and verified, and user role and permission information can be included in advanced usage. 4. Common errors include signature verification failure, token expiration, and payload oversized. Debugging skills include using debugging tools and logging. 5. Performance optimization and best practices include using appropriate signature algorithms, setting validity periods reasonably,

A string is a sequence of characters, including letters, numbers, and symbols. This tutorial will learn how to calculate the number of vowels in a given string in PHP using different methods. The vowels in English are a, e, i, o, u, and they can be uppercase or lowercase. What is a vowel? Vowels are alphabetic characters that represent a specific pronunciation. There are five vowels in English, including uppercase and lowercase: a, e, i, o, u Example 1 Input: String = "Tutorialspoint" Output: 6 explain The vowels in the string "Tutorialspoint" are u, o, i, a, o, i. There are 6 yuan in total

Static binding (static::) implements late static binding (LSB) in PHP, allowing calling classes to be referenced in static contexts rather than defining classes. 1) The parsing process is performed at runtime, 2) Look up the call class in the inheritance relationship, 3) It may bring performance overhead.

What are the magic methods of PHP? PHP's magic methods include: 1.\_\_construct, used to initialize objects; 2.\_\_destruct, used to clean up resources; 3.\_\_call, handle non-existent method calls; 4.\_\_get, implement dynamic attribute access; 5.\_\_set, implement dynamic attribute settings. These methods are automatically called in certain situations, improving code flexibility and efficiency.
