He estado leyendo sobre lo que son las interface y las clases abstractas y en principio lo entiendo bien (o eso creo :P ) pero, me ha surgido una duda y es que no se cual es la verdadera diferencia entre una y otra.
Cuando se define una interfaz, se declara una serie de métodos pero sin desarrollar, o sea, sin especificar ningun codigo...
Código PHP:
Ver originalinterface Web {
public function getTitulo();
}
Luego, las clases que implementan esa interface seran las encargadas de proporcionar un codigo a los metodos que contiene esa interface.
Código PHP:
Ver originalclass pagina_Web implements Web
{
public function getTitulo()
{
return $this->titulo;
}
}
Conclusion: Una interface no permite crear el cuerpo de ninguna funcion, dejando esta tarea a las clases que la implementan.
Hasta aquí, todo entendible, la duda empieza en la utilizacion de una clase abstracta.
Las clases abstractas permiten definir funciones completas que pueden heredarse.
O sea, que en vez de usar el ejemplo anterior, podria a ver hecho directamente así:
Código PHP:
Ver originalabstract class Web
{
public function getTitulo()
{
return $this->titulo;
}
abstract public function otra_cosa();
}
En primer lugar os pregunto:
1 - ¿Es correcto mi conocimiento de inteface y clases abstractas? o por el contrario ¿entendí mal el concepto?
2 - ¿Cuando utilizo uno y cuando utilizo el otro?
En fin, son muchos conceptos que acabo de aprender y tengo que ir asimiliando
Saludos, muchas gracias