Kaj je abstraktni razred?

Tako kot abstraktni razred obstajajo tudi abstraktne metode. S abstraktno ključno besedo razglasimo tako abstraktno metodo kot abstraktni razred. V tej temi se bomo seznanili z abstraktnim razredom PHP.

Po konceptu dedovanja se nadrejeni razred razširi na izpeljani razred. Metode v nadrejenem razredu izvajajo ali definirajo izpeljani razredi. PHP s pomočjo abstraktnih razredov in abstraktnih metod omogoča, da je nadrejeni razred bolj specifičen.

Abstraktni razred obvezno vsebuje eno metodo kot abstraktno. Ta abstraktni razred ima lahko tudi druge ne-abstraktne metode.

Sintaksa

Sintaksa abstraktnega razreda z eno metodo kot abstraktno.

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

Izvlečna metoda

abstract public function DemoAbstractMethod();

Kako deluje razred Abstrakt v PHP?

V tem članku bomo spoznali delovanje abstraktnega razreda in gre takole.

Zdaj, ko vemo, da ima abstraktni razred obvezno eno metodo kot abstraktno.

Lahko obstajajo tudi ne-abstraktne metode. Abstraktna metoda ima v osnovnem razredu samo deklaracijo. Pomeni, da ima samo imena in parametre brez druge kode.

Za nadaljnjo opredelitev metode in delo z metodo je treba to metodo implementirati v izpeljani razred, ki podaljša osnovni razred. Ne pozabite tudi, da tega abstraktnega razreda ni mogoče uporabiti za ustvarjanje predmetov, vendar lahko razred, izpeljan iz osnovnega razreda, ustvari predmete za ustvarjanje predmetov.

Primeri izvlečnega razreda v PHP

Tu je nekaj primerov izvlečka razreda PHP spodaj

Primer # 1

V spodnjem programu izvemo, kaj se zgodi, ko se ustvari objekt abstraktnega razreda.

Abstraktni razred Študent je ustvarjen z eno abstraktno metodo favouriteSubject () metode Študentskega razreda in dvema drugim ne abstraktnima metodama, kot sta setRollNo () in getRollNO (), ki določa in dobi vlogo študenta, kar se naredi z ustvarjanjem predmeta izpeljanega razreda (razširitev osnovnega razreda).

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

Izhod:

Primer # 2

Ta primer je razložen korak za korakom spodaj, po programskem izhodu skupaj s kodo iz tega primera.

Koda

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

Izhod:

Abstraktni razred lahko označimo kot okostje za izpeljane razrede. V tem zgornjem primeru razglasimo abstraktni razred Student in lastnost, imenovano $ m za ocene študenta.

Pojasnilo primera št. 2

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

Abstraktni razred lahko označimo kot okostje za izpeljane razrede. V tem primeru razglasimo abstraktni razred in metode skupaj z drugimi metodami.

V zgornjem primeru smo razglasili abstraktni razred Študenti z abstraktnimi metodami za izračun odstotka študenta skupaj z navedenimi ocenami.

Prav tako smo ustvarili metode (ki niso abstraktne), da nastavimo študentske znamke in pridobimo najljubši predmet študenta.

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

Za ustvarjanje predmetov abstraktnega razreda Študent moramo razširiti razred Študent in iz njega ustvariti izvedene razrede. Osnovni razred uporablja ključno besedo extends, ki omogoča osnovnemu razredu razširitev. Ko se razred razširi, lahko zdaj uporabimo metode osnovnega razreda.

V zgornjem primeru je Ram izpeljani razred, ki podaljša osnovni razred Student. Uporablja ključno besedo extends. Zdaj smo izračunali metodo процент () za izračun odstotka mark, ki jih je pridobil Ram.

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

Razglasitev še enega razreda, ki podaljša osnovni razred Študent, da bomo izvedeli več.

V zgornjem primeru smo ustvarili Sherry kot izpeljani razred, ustvarjen iz osnovnega razreda Student. Pri tem se uporablja ključna beseda extends. Ima dve funkciji, ki je bila razglašena za abstraktno, metoda calulatePercentage () v osnovnem razredu, druga pa je favoriteSubject () metoda, ki ni abstraktna.

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

Zdaj ustvarimo objekt osnovnega razreda in objekt izpeljanega razreda, ki vrže napako. Ker razreda ne moremo izvesti kot abstraktnega.

Tako je mogoče ustvariti le objekt izpeljanega razreda. Ko to storimo, bomo z uporabo tega predmeta poklicali abstraktno metodo in ne abstraktno metodo, kot je prikazano spodaj.

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

Sklep

V tem članku upam, da ste izvedeli o tem, kako je abstraktni razred deklariran, kako deluje, kako se razširja z uporabo ključne besede extends, kako je abstraktna metoda deklarirana v osnovnem razredu in kako se izvaja v izpeljanem razredu. Pojasnjeni primeri vam bodo pomagali, da se koncepta preprosto naučite. Upam, da je bil pripravljen, da bo dovolj uporaben, da bo dojel in vadil več.

Priporočeni članki

To je vodnik za razred Izvleček v PHP. Tukaj razpravljamo, kako deluje razred Abstrakt v PHP z vzorčno kodo in ustreznimi izhodi. Za več informacij si lahko ogledate tudi naslednje članke -

  1. Objekt v PHP
  2. Konstante PHP
  3. Piškotek v PHP
  4. Vzorci v PHP
  5. Faktororial v PHP
  6. PHP Čarobne konstante
  7. Izvleček razreda C ++
  8. PHP rekurzivna funkcija
  9. Rekurzivna funkcija v Pythonu
  10. Rekurzivna funkcija v C
  11. Rekurzivna funkcija v JavaScript