Una interfaz solo define métodos que debe de implementar una clase (contrato).
Una clase abstracta puede tener métodos ya definidos y métodos abstractos (es decir métodos que debes de implementar concretamente) para que funcione, por ejemplo:
Código PHP:
Ver originalabstract class sumaabstract
{
protected $_resultado;
public function suma($a, $b)
{
$this->_resultado = $a + $b;
}
abstract public function despliegaResultado();
}
class concreteSuma extends sumaabstract
{
public function despliegaResultado()
{
echo $this->_resultado;
}
}
Saludos.