PHP OOP - Clase abstracte. Exemplu. Exemplu explicat. Proprietatea publică $name. Metoda publică __construct().

PHP OOP - Clase abstracte

Să ne uităm la un exemplu:

Exemplu:
 
<?php
// Clasa părinte (Parent class)
abstract class Car {
  public $name;
  public function __construct($name) {
    $this->name = $name;
  }
  abstract public function intro() : string;
}

// Clasele copil(Child classes)
class Audi extends Car {
  public function intro() : string {
    return "Alege calitatea germană! Sunt un $this->name!";
  }
}

class Volvo extends Car {
  public function intro() : string {
    return "Mândru că sunt suedez! Sunt un $this->name!";
  }
}

class Citroen extends Car {
  public function intro() : string {
    return "Extravaganța franceză! Sunt un a $this->name!";
  }
}

// Creați obiecte din clasele copil (child classes)
$audi = new audi("Audi");
echo $audi->intro();
echo "<br>";

$volvo = new volvo("Volvo");
echo $volvo->intro();
echo "<br>";

$citroen = new citroen("Citroen");
echo $citroen->intro();
?>

Exemplu explicat

Clasele Audi, Volvo și Citroen sunt moștenite (inherited) de la clasa Auto. Aceasta înseamnă că clasele Audi, Volvo și Citroen pot utiliza proprietatea publică $name precum și metoda publică __construct() din clasa Car din cauza moștenirii (inheritance).

Dar, intro() este o metodă abstractă (abstract method) care ar trebui definită în toate clasele copil (child classes) și ar trebui să returneze un șir (string).