Temas > Programacion > Php > Metodos abstractos en php
Julio

Métodos abstractos
Vimos en conceptos anteriores que podemos definir clases
abstractas que tienen por objetivo agrupar atributos y métodos
comunes a un conjunto de subclases.
Si queremos que las subclases implementen comportamientos
obligatoriamente podemos definir métodos abstractos.
Un método abstracto se declara en una clase pero no se lo
implementa.
En nuestra clase Operacion tiene sentido declarar un método
abstracto: operar. Esto hará que todas las clases que hereden
de la clase Operación deban implementar el método operar.
Veamos la sintaxis para declarar un método abstracto con el
problema de las clases Operacion, Suma y Resta.
<html>
<head>
<title>Pruebas</title>
</head>
<body>
<?php
abstract class Operacion {
   protected $valor1;
   protected $valor2;
   protected $resultado;
   public function cargar1($v)
   {
      $this->valor1=$v;
   }
   public function cargar2($v)
   {
      $this->valor2=$v;
   }
   public function imprimirResultado()
   {
      echo $this->resultado.`<br>`;
   }
   public abstract function operar();
}
class Suma extends Operacion{
   public function operar()
   {
      $this->resultado=$this->valor1+$this->valor2;
   }
}
class Resta extends Operacion{
   public function operar()
   {
      $this->resultado=$this->valor1-$this->valor2;
   }
}
$suma=new Suma();
$suma->cargar1(10);
$suma->cargar2(10);
$suma->operar();
echo `El resultado de la suma de 10+10 es:`;
$suma->imprimirResultado();
$resta=new Resta();
$resta->cargar1(10);
$resta->cargar2(5);
$resta->operar();
echo `El resultado de la diferencia de 10-5 es:`;
$resta->imprimirResultado();
?>
</body>
</html>
Dentro de la clase Operacion declaramos un método pero no
lo implementamos:
   public abstract function operar();
Con esto logramos que todas las subclases de la clase Operacion
deben implementar el método operar():
class Suma extends Operacion{
   public function operar()
   {
      $this->resultado=$this->valor1+$this->valor2;
   }
}
Si una subclase no lo implementa se produce un error (supongamos
que la subclase Suma se nos olvida implementar el método operar):
Fatal error: Class Suma contains 1 abstract method and must
therefore be declared abstract or implement the remaining methods
(Operacion::operar)
Solo se pueden declarar métodos abstractos dentro de una clase
abstracta. Un método abstracto no puede ser definido con el
modificador private (esto es obvio ya que no lo podría implementar
la subclase).













¿Has olviado tu contraseña?

Pulsa aquí para registrate




Google






LunMarMieJueVieSabDom
    123
45678910
11121314151617
181920 21222324
252627282930 

Jueves 21 de Noviembre 2024
Semana 47

..............................................................................................................................................................................................................................................
(Contacto)..
Esta web utiliza cookies para obtener datos estadísticos de la navegación de sus usuarios. Política de privacidad y Aviso legal