¿Qué son las interfaces?
En PHP, una **interfaz** permite definir un conjunto de métodos que una clase debe implementar. Las interfaces facilitan el uso de múltiples clases de manera uniforme, promoviendo el **polimorfismo**.
Sintaxis de una interfaz
<?php
interface InterfaceName {
public function someMethod1();
public function someMethod2($name, $color);
public function someMethod3() : string;
}
?>
Interfaces vs. Clases abstractas
Aunque las interfaces y las clases abstractas son similares, hay algunas diferencias clave:
- Las interfaces **no pueden tener propiedades**, mientras que las clases abstractas sí.
- Todos los métodos en una interfaz son **públicos** y no pueden ser protegidos ni privados.
- Los métodos en una interfaz son **siempre abstractos**, por lo que no requieren la palabra clave
abstract
. - Una clase puede **implementar múltiples interfaces** mientras **hereda de una sola clase**.
Uso de Interfaces
Para implementar una interfaz, una clase debe usar la palabra clave **implements** e implementar todos los métodos de la interfaz.
Ejemplo 1: Implementando una interfaz en una clase
<?php
interface Animal {
public function makeSound();
}
class Cat implements Animal {
public function makeSound() {
echo "Meow";
}
}
$animal = new Cat();
$animal->makeSound();
?>
Salida esperada:
Meow
Ejemplo 2: Implementando la misma interfaz en múltiples clases
<?php
// Definición de la interfaz
interface Animal {
public function makeSound();
}
// Definición de clases que implementan la interfaz
class Cat implements Animal {
public function makeSound() {
echo "Meow ";
}
}
class Dog implements Animal {
public function makeSound() {
echo "Bark ";
}
}
class Mouse implements Animal {
public function makeSound() {
echo "Squeak ";
}
}
// Crear una lista de objetos de diferentes clases
$cat = new Cat();
$dog = new Dog();
$mouse = new Mouse();
$animals = array($cat, $dog, $mouse);
// Recorrer la lista y hacer que cada animal emita un sonido
foreach($animals as $animal) {
$animal->makeSound();
}
?>
Salida esperada:
Meow Bark Squeak
0 Comentarios
Si desea contactar comigo, lo puede hacer atravez deste formulario gracias