Wat is een abstracte klasse?

Net als abstracte klasse, zijn er ook abstracte methoden. We verklaren zowel de abstracte methode als de abstracte klasse met het abstracte trefwoord. In dit onderwerp gaan we meer te weten komen over de klasse Abstract in PHP.

Volgens het concept van overerving wordt de bovenliggende klasse uitgebreid met de afgeleide klasse. De methoden in de bovenliggende klasse worden geïmplementeerd of gedefinieerd door de afgeleide klassen. PHP maakt een manier voor de ouderklasse om specifieker te zijn, door gebruik te maken van abstracte klassen en abstracte methoden.

De abstracte klasse bevat verplicht één methode als abstract. Deze abstracte klasse kan ook andere niet-abstracte methoden hebben.

Syntaxis

Syntaxis van abstracte klasse met één methode als abstract.

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

Abstracte methode

abstract public function DemoAbstractMethod();

Hoe werkt Abstract Class in PHP?

In dit artikel zullen we de werking van de abstracte klasse leren kennen en zo gaat het.

Zoals we weten, heeft een abstracte klasse verplicht één methode als abstract.

Er kunnen ook niet-abstracte methoden zijn. De abstracte methode heeft alleen de verklaring in de basisklasse. Dit betekent dat het alleen namen en parameters zonder andere code heeft.

Om de methode verder te definiëren en om met de methode te werken, moet deze methode worden geïmplementeerd in de afgeleide klasse die de basisklasse uitbreidt. Onthoud ook dat deze abstracte klasse niet kan worden geïnstantieerd om objecten te maken, maar de klasse die is afgeleid van de basisklasse kan worden geïnstantieerd om objecten te maken.

Voorbeelden van abstracte klasse in PHP

Hier zijn enkele voorbeelden van de klasse Abstract in PHP hieronder

Voorbeeld 1

In het onderstaande programma leren we wat er gebeurt wanneer een object van abstracte klasse wordt gemaakt.

Abstracte klasse Student is gemaakt met een abstracte methode favouriteSubject () methode van de Student Class en twee andere niet abstracte methoden zoals setRollNo () en getRollNO () die de rol van de student instellen en krijgen, wat wordt gedaan door het object van de afgeleide klasse te maken (uitbreiding van de basisklasse).

<_?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();
?>

Uitgang:

Voorbeeld 2

Dit voorbeeld wordt hieronder stap voor stap uitgelegd, na de uitvoer van het programma samen met de code uit dit voorbeeld.

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();

Uitgang:

Een abstracte klasse kan worden aangeduid als een skelet voor afgeleide klassen. In dit bovenstaande voorbeeld verklaren we de abstracte klasse Student en een eigenschap genaamd $ m voor cijfers van de student.

Uitleg van voorbeeld # 2

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

Een abstracte klasse kan worden aangeduid als een skelet voor afgeleide klassen. In dit voorbeeld verklaren we de abstracte klasse en methoden samen met andere methoden.

In het bovenstaande voorbeeld hebben we abstracte klasse Studenten verklaard met abstracte methoden om het percentage van de student te berekenen, samen met de gegeven cijfers.

We hebben ook methoden gemaakt (die niet abstract zijn) om de cijfers van de student in te stellen en het favoriete onderwerp van de student te krijgen.

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

Om objecten van abstracte klasse Student te maken, moeten we de klasse Student uitbreiden en daaruit afgeleide klassen maken. De basisklasse gebruikt uitgebreid sleutelwoord om de basisklasse uit te breiden. Als de klasse eenmaal is uitgebreid, kunnen we nu de methoden van de basisklasse gebruiken.

In het bovenstaande voorbeeld is Ram de afgeleide klasse die de student van de basisklasse uitbreidt. Het gebruikt het uitgebreide sleutelwoord. Nu hebben we de methode percentage () berekend om het percentage van de door Ram verkregen cijfers te berekenen.

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

Nog een klas declareren waardoor de basisklasse Student wordt uitgebreid zodat we meer kunnen leren.

In het bovenstaande voorbeeld hebben we Sherry gemaakt als de afgeleide klasse die is gemaakt vanuit de basisklasse Student. Dit maakt gebruik van het uitgebreide sleutelwoord. Het heeft twee functies waarvan de ene als abstract is aangemerkt, de methode calulatePercentage () in de basisklasse en de andere is de methode favoriteSubject () die niet abstract is.

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';
)
)

Nu maken we het object van de basisklasse en het object van de afgeleide klasse, wat een fout veroorzaakt. Omdat we de als abstract verklaarde klasse niet kunnen instantiëren.

Dus alleen het object van de afgeleide klasse kan worden gemaakt. Als dit eenmaal is gedaan, zullen we dit object met de abstracte methode gebruiken en niet de abstracte methode, zoals hieronder te zien is.

$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();

Conclusie

In dit artikel hoop ik dat je hebt geleerd hoe de abstracte klasse wordt gedeclareerd, hoe het werkt, hoe het wordt uitgebreid met het uitgebreide sleutelwoord, hoe de abstracte methode wordt gedeclareerd in de basisklasse en hoe deze wordt geïmplementeerd in de afgeleide klasse. De toegelichte voorbeelden helpen u het concept op uw gemak te leren. Ik hoop dat het bereid is om nuttig genoeg te zijn om meer te begrijpen en te oefenen.

Aanbevolen artikelen

Dit is een handleiding voor de klasse Abstract in PHP. Hier bespreken we hoe Abstract Class werkt in PHP met de voorbeeldcode en de juiste uitvoer. U kunt ook de volgende artikelen bekijken voor meer informatie -

  1. Object in PHP
  2. PHP Constanten
  3. Cookie in PHP
  4. Patronen in PHP
  5. Factorie in PHP
  6. PHP Magic Constants
  7. Abstracte klasse in C ++
  8. PHP recursieve functie
  9. Recursieve functie in Python
  10. Recursieve functie in C
  11. Recursieve functie in JavaScript