Clase abstracta vs. Interfaz en PHP
Este tutorial demuestra la diferencia entre clase abstracta
e interfaz
en PHP.
Antes de entrar en las diferencias, primero debemos entender los conceptos de clase abstracta
e interfaz
. Estos son los puntos importantes tanto para la clase abstracta
como para la interfaz
.
Clase abstracta en PHP
La clase abstracta
está parcialmente implementada por los desarrolladores y contiene al menos un método abstracto, un método sin ningún código. Aquí hay algunos puntos importantes para entender la clase abstracta
.
- La
clase abstracta
está bajo abstracción parcial. - Podemos crear variables en la
clase abstracta
. - Las clases abstractas pueden contener métodos abstractos y no abstractos.
- Podemos usar cualquier modificador de acceso en la
clase abstracta
. - Podemos acceder a las funciones de
clase abstracta
de la clase derivada utilizando la palabra claveextiende
. - En la
clase abstracta
, son posibles herencias múltiples.
Aquí hay un ejemplo de cómo crear una clase abstracta
.
<?php
abstract class Demo_Abstract_Class {
abstract protected
function Get_Value();
public
function Print_Value() {
print $this -> Get_Value();
}
}
?>
Interfaz en PHP
La interfaz está definida por la palabra clave interfaz
, donde todos los métodos son abstractos. Aquí hay algunos puntos importantes para entender la interfaz
.
- La interfaz está bajo abstracción total.
- No podemos crear variables en la
interfaz
. - La
interfaz
solo contiene métodos abstractos. - Solo se utiliza el modificador de acceso
público
en lainterfaz
. - Podemos obtener la
interfaz
de una clase derivada usando la palabra claveimplementar
. - Las herencias múltiples son posibles con
interfaces
.
Aquí hay un ejemplo para demostrar la interfaz
.
<?php
interface Demo_Interface {
public
function execute();
}
?>
Clase abstracta vs. Interfaz en PHP
Aquí están las diferencias entre clase abstracta
e interfaz
.
Clase abstracta | Interfaz |
---|---|
Sin herencia múltiple. | Admite herencia múltiple. |
La clase abstracta contiene un miembro de datos. |
La interfaz no contiene un miembro de datos. |
La clase abstracta soporta los contenedores. |
La interfaz no soporta los contenedores. |
La clase abstracta contiene miembros completos e incompletos. |
La interfaz contiene solo los miembros completos, lo que también se refiere a la firma del miembro. |
La clase abstracta puede tener modificadores de acceso con subs, propiedades y funciones. |
En la interfaz todo se considera público, por lo que no tiene modificadores de acceso. |
Los miembros completos de la clase abstracta pueden ser estáticos, mientras que los miembros incompletos no pueden ser estáticos. |
Ningún miembro de la interfaz puede ser estático. |
Sheeraz is a Doctorate fellow in Computer Science at Northwestern Polytechnical University, Xian, China. He has 7 years of Software Development experience in AI, Web, Database, and Desktop technologies. He writes tutorials in Java, PHP, Python, GoLang, R, etc., to help beginners learn the field of Computer Science.
LinkedIn Facebook