Maison >développement back-end >tutoriel php >Classe abstraite en PHP
Comme les classes abstraites, 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.
Commencez votre cours de développement de logiciels libres
Développement Web, langages de programmation, tests de logiciels et autres
Selon le concept d'héritage, la classe parent est étendue par la classe dérivée. Les méthodes de la classe parent sont implémentées ou définies par les classes dérivées. PHP permet à la classe parent d'être plus spécifique en utilisant une classe abstraite et des méthodes abstraites.
La classe abstraite contient obligatoirement une méthode abstraite. En outre, cette classe abstraite peut également avoir d'autres méthodes non abstraites.
Syntaxe
Syntaxe de la classe abstraite avec une méthode comme abstraite.
abstract class DemoAbstractClass() { abstract public function DemoAbstractMethod(); }
Méthode abstraite
abstract public function DemoAbstractMethod();
Cet article apprendra le fonctionnement de la classe abstraite, et ça se passe comme ça.
Maintenant, comme nous le savons, 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.
Voici quelques exemples de classe abstraite en PHP ci-dessous
Dans le programme ci-dessous, nous apprenons ce qui se passe lorsqu'un objet d'une classe abstraite est créé.
La classe abstraite Student est créée contenant une méthode abstraite favoriteSubject() de la classe Student et deux autres méthodes non abstraites comme setRollNo() et getRollNO() qui définissent et obtiennent le rôle de l'étudiant, ce qui se fait en créant l'objet de la classe dérivée (étendant la classe de base).
Code :
<?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(); ?>
Sortie :
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. '%' .'<br>'; } } class Sherry extends Student{ public function calulatePercentage(){ $percentage = ($this->m /100 ) * 100; return 'The percentage of Sherry is '.$percentage. '%' .'<br>'; } public function favoriteSubject() { return 'Favorite subject is Maths'; } } $ram = new Ram(); $ram->setMarks(92); echo $ram->calulatePercentage(); echo $ram->favoriteSubject(); echo '<hr>'; $sherry = new Sherry(); $sherry->setMarks(97); echo $sherry->calulatePercentage(); echo $sherry->favoriteSubject();
Sortie :
Une classe abstraite peut être qualifiée de squelette pour les classes dérivées. Dans l'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 n°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 abstraite et les méthodes ainsi que d'autres méthodes.
Dans l'exemple ci-dessus, nous avons déclaré les étudiants de classe abstraite avec des méthodes abstraites pour calculer le pourcentage de l'étudiant, 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 la matière préférée 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 la classe abstraite Student, nous devons étendre la classe Student et en créer des classes dérivées. La classe de base utilise des mots-clés extends pour permettre à la classe de base de s'étendre. Une fois la classe étendue, nous pouvons désormais utiliser les méthodes de la 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é extends. 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. '%' .'<br>'; } }
Déclarer une classe supplémentaire qui étend la classe de base Student pour que nous puissions en savoir plus.
Dans l'exemple ci-dessus, nous avons créé Sherry comme classe dérivée créée à partir de la classe de base Student. Cela utilise le mot-clé étendu. Il a deux fonctions : abstract, 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. '%' .'<br>'; } public function favoriteSubject() { return 'Favorite subject is Maths'; } }
Maintenant, nous créons 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 est 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, toutes deux comme vu ci-dessous.
$ram = new Ram(); $ram->setMarks(92); echo $ram->calculatePercentage(); echo $ram->favoriteSubject(); echo '<hr>'; $sherry = new Sherry(); $sherry->setMarks(97); echo $sherry->calculatePercentage(); echo $sherry->favoriteSubject();
In this article, I hope you learned about how the abstract class is declared, how it works, how it is extended using extends keywords, how the abstract method is declared in the base class and how it is implemented in the derived class. The examples explained will help you learn the concept at ease. I hope it was prepared to be useful enough to grasp and practice more.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!