Hvad er en abstrakt klasse?

Ligesom abstrakt klasse er der også abstrakte metoder. Vi erklærer både den abstrakte metode og den abstrakte klasse med det abstrakte nøgleord. I dette emne skal vi lære om abstrakt klasse i PHP.

I henhold til arvebegrebet udvides forældreklassen med den afledte klasse. Metoderne i forældreklassen implementeres eller defineres af de afledte klasser. PHP gør en måde for forældreklassen at være mere specifik ved at gøre brug af abstrakte klasse og abstrakte metoder.

Den abstrakte klasse indeholder obligatorisk én metode som abstrakt. Denne abstrakte klasse kan også have andre ikke-abstrakte metoder.

Syntaks

Syntaks af abstrakt klasse med en metode som abstrakt.

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

Abstrakt metode

abstract public function DemoAbstractMethod();

Hvordan fungerer Abstract Class i PHP?

I denne artikel lærer vi den abstrakte klasses arbejde, og det går sådan ud.

Som vi ved, at en abstrakt klasse obligatorisk har en metode som abstrakt.

Der kan også være ikke-abstrakte metoder. Den abstrakte metode har kun deklarationen i basisklassen. Betyder at det kun har navne og parametre uden nogen anden kode.

For at definere metoden yderligere og for at arbejde med metoden skal denne metode implementeres i den afledte klasse, der udvider basisklassen. Husk også, at denne abstrakte klasse ikke kan instantieres til at oprette objekter, men klassen, der stammer fra baseklassen, kan blive instantieret for at oprette objekter.

Eksempler på abstrakt klasse i PHP

Her er nogle eksempler på abstrakt klasse i PHP nedenfor

Eksempel 1

I nedenstående program lærer vi, hvad der sker, når der oprettes et objekt fra abstrakt klasse.

Abstrakt klasse Student oprettes indeholdende en abstrakt metode favouriteSubject () -metoden i Student Class og to andre ikke abstrakte metoder som setRollNo () og getRollNO (), der sætter og får den studerendes rolle, hvilket gøres ved at oprette objektet for den afledte klasse (udvider baseklassen).

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

Output:

Eksempel 2

Dette eksempel forklares trin for trin nedenfor efter programudgangen sammen med koden fra dette eksempel.

Kode

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

Output:

En abstrakt klasse kan betegnes som et skelet til afledte klasser. I dette ovenstående eksempel erklærer vi den abstrakte klasse Student og en egenskab kaldet $ m til studerendes karakterer.

Forklaring af eksempel # 2

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

En abstrakt klasse kan betegnes som et skelet til afledte klasser. I dette eksempel erklærer vi den abstrakte klasse og metoder sammen med andre metoder.

I ovenstående eksempel har vi erklæret abstrakt klasse studerende med abstrakte metoder til at beregne procentdelen af ​​den studerende sammen med de givne karakterer.

Vi har også oprettet metoder (som ikke er abstrakte) til at indstille studerendes markeringer og få det studerendes yndlingsemne.

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

For at skabe objekter i abstrakt klasse Student, skal vi udvide klassen Student og skabe afledte klasser ud af den. Baseklassen bruger udvidede nøgleord for at give baseklassen mulighed for at udvide. Når klassen er udvidet, kan vi nu bruge baseklasse-metoderne.

I ovenstående eksempel er Ram den afledte klasse, der udvider baseklassen Student. Det bruger udvidelsesnøgleordet. Nu har vi beregnet procentdel () -metode til at beregne procentdelen af ​​de karakterer, der er opnået af Ram.

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

At erklære endnu en klasse, der udvider baseklassen Student for os at lære mere.

I ovenstående eksempel har vi oprettet Sherry som den afledte klasse oprettet fra baseklassen Student. Dette bruger udvidelsesnøgleordet. Det har to funktioner, den ene, der blev erklæret som abstrakt, metoden calulatePercentage () i baseklassen, den anden er metoden FavoriteSubject (), som ikke er abstrakt.

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 opretter vi objektet for baseklassen og objektet for den afledte klasse, der kaster en fejl. Fordi vi ikke kan indlede klassen, der er erklæret som abstrakt.

Således kan kun objektet for den afledte klasse oprettes. Når dette er gjort, ved hjælp af dette objekt vil vi kalde den abstrakte metode og ikke abstrakt metode begge som det ses nedenfor.

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

Konklusion

I denne artikel håber jeg, at du lærte, hvordan den abstrakte klasse er erklæret, hvordan den fungerer, hvordan den udvides ved hjælp af udvidede nøgleord, hvordan den abstrakte metode er deklareret i baseklassen, og hvordan den implementeres i den afledte klasse. De forklarede eksempler hjælper dig med at lære konceptet let. Håber, at den var parat til at være nyttig nok til at forstå og øve mere.

Anbefalede artikler

Dette er en guide til abstrakt klassen i PHP. Her diskuterer vi Hvordan fungerer Abstract Class i PHP med prøvekoden og passende output. Du kan også se på de følgende artikler for at lære mere -

  1. Objekt i PHP
  2. PHP-konstanter
  3. Cookie i PHP
  4. Mønstre i PHP
  5. Factorial i PHP
  6. PHP magiske konstanter
  7. Abstrakt klasse i C ++
  8. PHP rekursiv funktion
  9. Rekursiv funktion i Python
  10. Rekursiv funktion i C
  11. Rekursiv funktion i JavaScript

Kategori: