HOWTO · PHP
Clase abstracta vs. Interfaz en PHP
Este tutorial demuestra la diferencia entre la clase abstracta y la interfaz en PHP.
En esta página
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 abstractaestá 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 abstractade 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
interfazsolo contiene métodos abstractos. - Solo se utiliza el modificador de acceso
públicoen lainterfaz. - Podemos obtener la
interfazde 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. |