Hva er en abstrakt klasse?

Som abstrakt klasse er det abstrakte metoder også. Vi erklærer både den abstrakte metoden og den abstrakte klassen med det abstrakte nøkkelordet. I dette emnet skal vi lære om abstrakt klasse i PHP.

I henhold til arvebegrepet utvides foreldreklassen med den avledede klassen. Metodene i foreldreklassen implementeres eller defineres av de avledede klassene. PHP gjør en måte for foreldreklassen å være mer spesifikk ved å gjøre bruk av abstrakte klasse og abstrakte metoder.

Den abstrakte klassen inneholder obligatorisk én metode som abstrakt. Denne abstrakte klassen kan også ha andre ikke-abstrakte metoder.

syntax

Syntaks for 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 artikkelen skal vi lære hvordan den abstrakte klassen fungerer, og det går slik.

Som vi vet at en abstrakt klasse obligatorisk har en metode som abstrakt.

Det kan være ikke-abstrakte metoder også. Den abstrakte metoden har bare deklarasjonen i grunnklassen. Betyr at den bare har navn og parametere uten annen kode.

For å definere metoden videre, og for å arbeide med metoden, må denne metoden implementeres i den avledede klassen som utvider baseklassen. Husk også at denne abstrakte klassen ikke kan instantieres for å lage objekter, men klassen avledet fra baseklassen kan bli instantivert for å lage objekter.

Eksempler på abstrakt klasse i PHP

Her er noen eksempler på abstrakt klasse i PHP gitt nedenfor

Eksempel 1

I programmet nedenfor lærer vi hva som skjer når et objekt av abstrakt klasse blir opprettet.

Abstrakt klasse Student er laget som inneholder en abstrakt metode favouriteSubject () -metoden til Studentklassen og to andre ikke abstrakte metoder som setRollNo () og getRollNO () som setter og får studentens rolle, noe som gjøres ved å lage objektet til den avledede klassen (utvide grunnklassen).

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

Utgang:

Eksempel 2

Dette eksemplet blir forklart trinn for trinn nedenfor, etter at programmet er sendt ut sammen med koden fra dette eksemplet.

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

Utgang:

En abstrakt klasse kan betegnes som et skjelett for avledede klasser. I dette eksemplet ovenfor erklærer vi den abstrakte klassen Student og en egenskap kalt $ m for merker av studenten.

Forklaring av eksempel 2

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

En abstrakt klasse kan betegnes som et skjelett for avledede klasser. I dette eksemplet erklærer vi den abstrakte klassen og metodene sammen med andre metoder.

I eksemplet over har vi erklært abstrakt klasse studenter med abstrakte metoder for å beregne prosentandelen av studenten, sammen med gitt karakter.

Vi har også laget metoder (som ikke er abstrakte) for å sette studentens Marks og for å få favorittemnet til studenten.

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

For å lage objekter av abstrakt klasse Student må vi utvide klassen Student og lage avledede klasser ut av den. Baseklassen bruker utvidet nøkkelord for å la baseklassen utvide. Når klassen er utvidet, kan vi nå bruke baseklasse-metodene.

I eksemplet ovenfor er Ram den avledede klassen som utvider baseklassen Student. Den bruker utvidet søkeord. Nå har vi beregnet prosent () -metode for å beregne prosentandelen av karakterene oppnådd av Ram.

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

Å erklære en klasse til som utvider grunnklassen Student for at vi skal lære mer.

I eksemplet ovenfor har vi opprettet Sherry som den avledede klassen opprettet fra baseklassen Student. Denne bruker utvidet søkeord. Den har to funksjoner, den ene som ble erklært som abstrakt, metoden calulatePercentage () i baseklassen, den andre er den favorittmetoden () 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';
)
)

Nå lager vi objektet for baseklassen og objektet for den avledede klassen, som kaster en feil. Fordi vi ikke kan opprette klassen som er erklært som abstrakt.

Dermed kan bare objektet til den avledede klassen skapes. Når dette er gjort, ved å bruke dette objektet, vil vi kalle den abstrakte metoden og ikke abstrakt metode begge som sett 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();

Konklusjon

I denne artikkelen håper jeg du lærte om hvordan den abstrakte klassen er erklært, hvordan den fungerer, hvordan den utvides ved å bruke utvidede nøkkelord, hvordan den abstrakte metoden er deklarert i baseklassen og hvordan den implementeres i den avledede klassen. Eksemplene som er forklart, hjelper deg med å lære konseptet enkelt. Håper den var forberedt på å være nyttig nok til å fatte og øve mer.

Anbefalte artikler

Dette er en guide til abstrakt-klassen i PHP. Her diskuterer vi hvordan fungerer abstrakt klasse i PHP med prøvekoden, og passende utganger. Du kan også se på følgende artikler for å lære mer -

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