Qu'est-ce qu'une classe abstraite?

Comme la classe abstraite, il existe également des méthodes abstraites. Nous déclarons à la fois la méthode abstraite et la classe abstraite avec le mot clé abstract. Dans cette rubrique, nous allons découvrir la classe Abstract en PHP.

Selon le concept d'héritage, la classe parente est étendue par la classe dérivée. Les méthodes de la classe parente sont implémentées ou définies par les classes dérivées. PHP permet à la classe parente d'être plus spécifique, en utilisant la classe abstraite et les méthodes abstraites.

La classe abstraite contient obligatoirement une méthode comme abstraite. En outre, cette classe abstraite peut également avoir d'autres méthodes non abstraites.

Syntaxe

Syntaxe de classe abstraite avec une méthode comme abstrait.

abstract class DemoAbstractClass() (
abstract public function DemoAbstractMethod();
)

Méthode abstraite

abstract public function DemoAbstractMethod();

Comment fonctionne la classe abstraite en PHP?

Dans cet article, nous allons apprendre le fonctionnement de la classe abstraite et ça se passe comme ça.

Maintenant que nous savons qu'une classe abstraite a obligatoirement une méthode comme abstraite.

Il peut également y avoir des méthodes non abstraites. La méthode abstraite n'a que la déclaration dans la classe de base. Cela signifie qu'il n'a que des noms et des paramètres sans autre code.

Pour définir davantage la méthode et travailler avec la méthode, cette méthode doit être implémentée dans la classe dérivée qui étend la classe de base. N'oubliez pas non plus que cette classe abstraite ne peut pas être instanciée pour créer des objets, mais la classe dérivée de la classe de base peut être instanciée pour créer des objets.

Exemples de classe abstraite en PHP

Voici quelques exemples de classe abstraite en PHP donnés ci-dessous

Exemple 1

Dans le programme ci-dessous, nous apprenons ce qui se passe lorsqu'un objet de classe abstraite est créé.

La classe abstraite Student est créée contenant une méthode abstraite favouriteSubject () de la classe Student et deux autres méthodes non abstraites comme setRollNo () et getRollNO () qui définit et obtient le rôle de l'étudiant, ce qui se fait en créant l'objet de la classe dérivée (extension de la classe de base).

<_?php
abstract class Student (
protected $m;
public function setRollNo($rollno) (
return $this->m = $rollno;
)
public function getRollNo() (
return $this->m;
)
abstract public function favouriteSubject()
)
class Radha extends Student (
public function favouriteSubject() (
return "English";
)
)
$obj = new Student; //this statement throws error as we cannot create object of class Student as it is defined as abstract
$obj = new Radha; //this statement does not throws error and executes correctly
$obj->favouriteSubject();
?>

Production :

Exemple # 2

Cet exemple est expliqué étape par étape ci-dessous, après la sortie du programme avec le code de cet exemple.

Code

abstract class Student(
protected $m;
abstract public function calulatePercentage();
public function setMarks($marks) (
return $this->m = $marks;
)
public function favoriteSubject() (
return 'Favorite subject is English';
)
)
class Ram extends Student(
public function calulatePercentage()(
$percentage = ($this->m /100 ) * 100;
return 'The percentage of Ram is '.$percentage. '%' .'
';
)
)
class Sherry extends Student(
public function calulatePercentage()(
$percentage = ($this->m /100 ) * 100;
return 'The percentage of Sherry is '.$percentage. '%' .'
';
)
public function favoriteSubject() (
return 'Favorite subject is Maths';
)
)
$ram = new Ram();
$ram->setMarks(92);
echo $ram->calulatePercentage();
echo $ram->favoriteSubject();
echo ' ';
$sherry = new Sherry();
$sherry->setMarks(97);
echo $sherry->calulatePercentage();
echo $sherry->favoriteSubject();
abstract class Student(
protected $m;
abstract public function calulatePercentage();
public function setMarks($marks) (
return $this->m = $marks;
)
public function favoriteSubject() (
return 'Favorite subject is English';
)
)
class Ram extends Student(
public function calulatePercentage()(
$percentage = ($this->m /100 ) * 100;
return 'The percentage of Ram is '.$percentage. '%' .'
';
)
)
class Sherry extends Student(
public function calulatePercentage()(
$percentage = ($this->m /100 ) * 100;
return 'The percentage of Sherry is '.$percentage. '%' .'
';
)
public function favoriteSubject() (
return 'Favorite subject is Maths';
)
)
$ram = new Ram();
$ram->setMarks(92);
echo $ram->calulatePercentage();
echo $ram->favoriteSubject();
echo ' ';
$sherry = new Sherry();
$sherry->setMarks(97);
echo $sherry->calulatePercentage();
echo $sherry->favoriteSubject();

Production :

Une classe abstraite peut être qualifiée de squelette pour les classes dérivées. Dans cet exemple ci-dessus, nous déclarons la classe abstraite Student et une propriété appelée $ m pour les notes de l'étudiant.

Explication de l'exemple # 2

abstract class Student (
abstract public function calulatePercentage();
)

Une classe abstraite peut être qualifiée de squelette pour les classes dérivées. Dans cet exemple, nous déclarons la classe et les méthodes abstraites avec d'autres méthodes.

Dans l'exemple ci-dessus, nous avons déclaré des élèves de classe abstraite avec des méthodes abstraites pour calculer le pourcentage de l'élève, ainsi que les notes attribuées.

De plus, nous avons créé des méthodes (qui ne sont pas abstraites) pour définir les notes de l'élève et obtenir le sujet favori de l'élève.

abstract class Student(
abstract public function calulatePercentage();
public function setMarks($marks) (
return $this->m = $marks;
)
public function favoriteSubject() (
return 'Favorite subject is English';
)
)

Pour créer des objets de classe abstraite Student, nous devons étendre la classe Student et en créer des classes dérivées. La classe de base utilise le mot-clé extend pour permettre à la classe de base de s'étendre. Une fois la classe étendue, nous pouvons maintenant utiliser les méthodes de classe de base.

Dans l'exemple ci-dessus, Ram est la classe dérivée qui étend la classe de base Student. Il utilise le mot clé extend. Nous avons maintenant calculé la méthode pourcentage () pour calculer le pourcentage des notes obtenues par Ram.

class Ram extends Student(
public function calulatePercentage()(
$percentage = ($this->m /100 ) * 100;
return 'The percentage of Ram is '.$percentage. '%' .'
';
)
)

Déclarer une classe de plus qui étend la classe de base Student pour que nous en apprenions plus.

Dans l'exemple ci-dessus, nous avons créé Sherry en tant que classe dérivée créée à partir de la classe de base Student. Cela utilise le mot clé extend. Il a deux fonctions, l'une déclarée abstraite, la méthode calulatePercentage () dans la classe de base, l'autre est la méthode favoriteSubject () qui n'est pas abstraite.

class Sherry extends Student(
public function calulatePercentage()(
$percentage = ($this->m /100 ) * 100;
return 'The percentage of Sherry is '.$percentage. '%' .'
';
)
public function favoriteSubject() (
return 'Favorite subject is Maths';
)
)

Nous créons maintenant l'objet de la classe de base et l'objet de la classe dérivée, ce qui génère une erreur. Parce que nous ne pouvons pas instancier la classe déclarée abstraite.

Ainsi, seul l'objet de la classe dérivée peut être créé. Une fois cela fait, en utilisant cet objet, nous appellerons la méthode abstraite et non la méthode abstraite, comme indiqué ci-dessous.

$ram = new Ram();
$ram->setMarks(92);
echo $ram->calculatePercentage();
echo $ram->favoriteSubject();
echo ' ';
$sherry = new Sherry();
$sherry->setMarks(97);
echo $sherry->calculatePercentage();
echo $sherry->favoriteSubject();
$ram = new Ram();
$ram->setMarks(92);
echo $ram->calculatePercentage();
echo $ram->favoriteSubject();
echo ' ';
$sherry = new Sherry();
$sherry->setMarks(97);
echo $sherry->calculatePercentage();
echo $sherry->favoriteSubject();

Conclusion

Dans cet article, j'espère que vous avez appris comment la classe abstraite est déclarée, comment elle fonctionne, comment elle est étendue à l'aide du mot-clé extend, comment la méthode abstraite est déclarée dans la classe de base et comment elle est implémentée dans la classe dérivée. Les exemples expliqués vous aideront à apprendre le concept à l'aise. J'espère qu'il a été préparé pour être suffisamment utile pour mieux comprendre et pratiquer.

Articles recommandés

Ceci est un guide de la classe Abstract en PHP. Nous discutons ici comment fonctionne la classe abstraite en PHP avec l'exemple de code et les sorties appropriées. Vous pouvez également consulter les articles suivants pour en savoir plus -

  1. Objet en PHP
  2. Constantes PHP
  3. Cookie en PHP
  4. Modèles en PHP
  5. Factoriel en PHP
  6. PHP Magic Constants
  7. Classe abstraite en C ++
  8. Fonction récursive PHP
  9. Fonction récursive en Python
  10. Fonction récursive en C
  11. Fonction récursive en JavaScript