holas estuve destripando un cms y me tope con una clase abstracta y me surgio una duda, busque en google y encontre un ejemplo similar al que genero mi duda y es como este ejemplo
Aqui hay una clase abstracta y lo demas se entiende (la funcionalidad de los metodos es lo que menos importa)
Código PHP:
abstract class Vehiculo
{
public $potencia;
public $peso;
function __construct($potencia,$peso)
{
$this->potencia = $potencia;
$this->peso = $peso;
return true;
}
function relacionPesoPotencia()
{
if ($this->potencia>0)
{
return ($this->peso/$this->potencia);
}
return -1; //aqui una duda extra, por que "-1" y no "0" ??.. no es lo mismo?
}
abstract function aceleracionAproximada();
}
Y aqui otra clase que hereda de la clase abstracta
Código PHP:
class Moto extends Vehiculo
{
function __construct($potencia,$peso)
{
$this->potencia = $potencia;
$this->peso = $peso;
return true;
}
function aceleracionAproximada()
{
$coeficienteTransmision = 3.0;
$t = $this->peso * 771.73 / (2.0 * $this->potencia * 735);
$t = $t * $coeficienteTransmision;
return $t;
}
}
Bueno como dije arriba la funcionalidad de los metodos es lo de menos, pero mi duda aqui es:
¿Porque la clase Moto hace un "$this->potencia" y "$this->peso" si nunca inicio ese atributo??.. osea nunca hizo un
public $potencia;
public $peso;
Entonces pense
, debe ser un atributo que heredo de la clase abstracta "Vehiculo" .. entonces si es asi por que no usa
parent::$potencia
parent::$peso
esa duda me tiene confundido.. alguien podria explicarme?? esto es lo que veo en las clases de un cms que estoy analizando..
y aprovechando la oportunidad.. siempre veo que hacen un
return -1 no seria lo mismo y mejor hacer
return 0 ??
PD: ese ejemplo lo saque de aqui http://www.epsilon-eridani.com/cubic/ap/cubic.php/pag/PHP5---Clases-abstractas-72.html