Što je apstraktni razred?

Poput apstraktne klase, postoje i apstraktne metode. Deklariramo i apstraktnu metodu i apstraktnu klasu sa apstraktnom ključnom riječi. U ovoj ćemo temi upoznati apstraktnu nastavu na PHP-u.

Prema konceptu nasljeđivanja, matični se razred proširuje izvedenim klasama. Metode u roditeljskoj klasi provode se ili definiraju izvedenim klasama. PHP čini roditeljsku klasu specifičnijom primjenom apstraktnih klasa i apstraktnih metoda.

Sažetak klase obvezno sadrži jednu metodu kao sažetak. Također, ova apstraktna klasa može imati i druge ne-apstraktne metode.

Sintaksa

Sintaksa apstraktne klase s jednom metodom kao sažetak.

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

Apstraktna metoda

abstract public function DemoAbstractMethod();

Kako apstraktni razred djeluje u PHP-u?

U ovom ćemo članku naučiti kako funkcionira apstraktna klasa i to ide ovako.

Sada kao što znamo da apstraktna klasa obvezno ima jednu metodu kao sažetak.

Mogu biti i ne-apstraktne metode. Apstraktna metoda ima samo deklaraciju u osnovnoj klasi. Znači da ima samo imena i parametre bez ikakvog drugog koda.

Da bi se metoda dodatno definirala i radila s metodom, ovu metodu je potrebno implementirati u izvedenu klasu koja proširuje osnovnu klasu. Također, zapamtite da se ta apstraktna klasa ne može instancirati za stvaranje objekata, ali klasa koja je izvedena iz osnovne klase može se intenzivirati za stvaranje objekata.

Primjeri apstraktne nastave u PHP-u

Evo nekoliko primjera apstraktne klase u PHP-u danom u nastavku

Primjer 1

U donjem programu saznajemo što se događa kada se stvori objekt apstraktne klase.

Sažetak razreda Student je kreiran tako da sadrži jednu apstraktnu metodu favouriteSubject () metodu Student Class i dvije druge ne apstraktne metode poput setRollNo () i getRollNO () koja postavlja i dobiva ulogu učenika, što se vrši kreiranjem objekta izvedenog razreda (proširivanje osnovne klase).

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

Izlaz:

Primjer 2

Ovaj je primjer objašnjen korak po korak, nakon što program ispadne zajedno s kodom iz ovog primjera.

Kodirati

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

Izlaz:

Sažetak klase može se nazvati kosturom izvedenih klasa. U ovom gornjem primjeru izjavljujemo apstraktni razred Student i svojstvo zvano $ m za ocjene učenika.

Objašnjenje primjera br. 2

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

Sažetak klase može se nazvati kosturom izvedenih klasa. U ovom primjeru izjavljujemo apstraktnu klasu i metode zajedno s drugim metodama.

U gornjem primjeru smo proglasili apstraktni razred učenika sa apstraktnim metodama za izračunavanje postotka učenika, zajedno s danim ocjenama.

Također, stvorili smo metode (koje nisu apstraktne) za postavljanje ocjene učenika i dobivanje omiljenog predmeta učenika.

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

Za stvaranje predmeta apstraktnog razreda Student moramo proširiti razred Student i iz njega stvoriti izvedene razrede. Osnovna klasa koristi ključnu riječ extends kako bi se omogućila produljivanja osnovne klase. Nakon što se klasa proširi, sada možemo koristiti metode osnovne klase.

U gornjem primjeru Ram je izvedena klasa koja proširuje osnovnu klasu Student. Koristi ključnu riječ extends. Sada smo izračunali postotak () metode za izračunavanje postotka maraka dobivenih Ramom.

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

Najava još jednog razreda koji proširuje osnovni razred Student da bismo naučili više.

U gornjem primjeru smo stvorili Sherry kao izvedenu klasu stvorenu iz osnovne klase Student. Za to se koristi ključna riječ extends. Ima dvije funkcije jedna koja je proglašena apstraktnom, metoda calulatePercentage () u osnovnoj klasi, a druga je favoriteSubject () metoda koja nije apstraktna.

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

Sada stvaramo objekt osnovne klase i objekt izvedene klase, koji baca pogrešku. Jer klasu koja je proglašena apstraktnom ne možemo instancirati.

Tako se može stvoriti samo objekt izvedene klase. Nakon što je to učinjeno, pomoću ovog objekta nazvat ćemo apstraktnu metodu, a ne apstraktnu metodu, kako je dolje prikazano.

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

Zaključak

U ovom članku, nadam se da ste saznali o tome kako je deklarirana apstraktna klasa, kako funkcionira, kako se proširuje pomoću ključne riječi extends, kako je apstraktna metoda deklarirana u osnovnoj klasi i kako se provodi u izvedenoj klasi. Objašnjeni primjeri pomoći će vam da lako naučite koncept. Nadam se da je spreman biti dovoljno koristan da shvati i vježba više.

Preporučeni članci

Ovo je vodič za sažetak klase na PHP-u. Ovdje smo raspravljali o tome kako funkcionira Apstraktna klasa u PHP-u s uzorkom koda i odgovarajućim ishodima. Možete također pogledati sljedeće članke da biste saznali više -

  1. Objekt u PHP-u
  2. PHP konstante
  3. Kolačić u PHP-u
  4. Obrasci u PHP-u
  5. Čimbenik u PHP-u
  6. PHP magične konstante
  7. Sažetak Razred C ++
  8. PHP rekurzivna funkcija
  9. Rekurzivna funkcija u Pythonu
  10. Rekurzivna funkcija u C
  11. Rekurzivna funkcija u JavaScript-u

Kategorija: