Čo je to abstraktná trieda?

Rovnako ako abstraktné triedy, existujú aj abstraktné metódy. Deklarujeme abstraktnú metódu aj abstraktnú triedu pomocou abstraktného kľúčového slova. V tejto téme sa budeme učiť o triede Abstract v PHP.

Podľa koncepcie dedičstva sa materská trieda rozširuje o odvodenú triedu. Metódy v nadradenej triede sú implementované alebo definované odvodenými triedami. PHP robí cestu pre rodičovskú triedu presnejšou pomocou abstraktných metód triedy a abstraktov.

Abstraktná trieda povinne obsahuje jednu metódu ako abstrakt. Táto abstraktná trieda môže mať aj iné ne abstraktné metódy.

syntax

Syntax abstraktnej triedy s jednou metódou ako abstrakt.

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

Abstraktná metóda

abstract public function DemoAbstractMethod();

Ako funguje Abstract Class v PHP?

V tomto článku sa naučíme prácu abstraktnej triedy a vyzerá to takto.

Teraz, keď vieme, že abstraktná trieda povinne má jednu metódu ako abstraktnú.

Môžu existovať aj ne-abstraktné metódy. Abstraktná metóda má iba deklaráciu v základnej triede. Znamená to, že má iba názvy a parametre bez iného kódu.

Na ďalšie definovanie metódy a prácu s ňou je potrebné túto metódu implementovať do odvodenej triedy, ktorá rozširuje základnú triedu. Pamätajte tiež, že táto abstraktná trieda nemôže byť vytvorená na vytvorenie objektov, ale trieda odvodená zo základnej triedy môže byť vytvorená na vytvorenie objektov.

Príklady abstraktnej triedy v PHP

Tu je niekoľko príkladov triedy Abstract v PHP uvedených nižšie

Príklad č. 1

V nasledujúcom programe sa dozvieme, čo sa stane, keď sa vytvorí objekt abstraktnej triedy.

Vytvára sa abstraktná trieda Študent obsahuje jednu abstraktnú metódu favouriteSubject () triedy Student Class a dve ďalšie, nie abstraktné metódy, ako setRollNo () a getRollNO (), ktoré nastavujú a získajú rolu študenta, čo sa robí vytvorením objektu odvodenej triedy (rozšírenie základnej triedy).

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

Výkon :

Príklad č. 2

Tento príklad je vysvetlený krok za krokom nižšie po výstupe programu spolu s kódom z tohto príkladu.

kód

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

Výkon :

Abstraktná trieda môže byť označená ako kostra pre odvodené triedy. V tomto vyššie uvedenom príklade deklarujeme pre známky študenta abstraktnú triedu Student a vlastnosť nazývanú $ m.

Vysvetlenie príkladu č. 2

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

Abstraktná trieda môže byť označená ako kostra pre odvodené triedy. V tomto príklade deklarujeme abstraktnú triedu a metódy spolu s inými metódami.

V uvedenom príklade sme deklarovali abstraktnú triedu Študenti s abstraktnými metódami na výpočet percenta študenta spolu so známkami.

Vytvorili sme tiež metódy (ktoré nie sú abstraktné) na nastavenie známok študenta a získanie obľúbeného predmetu študenta.

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

Aby sme vytvorili objekty abstraktnej triedy Student, musíme rozšíriť triedu Student a z nej odvodiť odvodené triedy. Základná trieda používa kľúčové slovo rozšírenia, aby umožnila rozšírenie základnej triedy. Po rozšírení triedy môžeme teraz používať metódy základnej triedy.

Vo vyššie uvedenom príklade je Ram odvodená trieda, ktorá rozširuje základnú triedu Student. Používa kľúčové slovo rozšírenia. Teraz sme vypočítali metódu percenta () na výpočet percenta známok získaných Ramom.

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

Vyhlasuje sa ďalšia trieda, ktorá rozširuje základnú triedu Študent, aby sme sa dozvedeli viac.

Vo vyššie uvedenom príklade sme vytvorili Sherry ako odvodenú triedu vytvorenú zo základnej triedy Student. Používa sa kľúčové slovo rozšírenia. Má dve funkcie, jednu, ktorá bola vyhlásená za abstraktnú, metódu calulatePercentage () v základnej triede a druhú je metóda FavoritesSubject (), ktorá nie je abstraktná.

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

Teraz vytvoríme objekt základnej triedy a objekt odvodenej triedy, ktorý vyvolá chybu. Pretože nemôžeme vytvoriť inštanciu triedy vyhlásenej za abstraktnú.

Takto je možné vytvoriť iba objekt odvodenej triedy. Akonáhle je to hotové, pomocou tohto objektu zavoláme abstraktnú metódu a nie abstraktnú metódu, ako je vidieť nižšie.

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

záver

V tomto článku dúfam, že ste sa dozvedeli o tom, ako sa abstraktná trieda deklaruje, ako funguje, ako sa rozširuje pomocou kľúčového slova rozširuje, ako sa abstraktná metóda deklaruje v základnej triede a ako sa implementuje do odvodenej triedy. Vysvetlené príklady vám pomôžu naučiť sa tento koncept ľahko. Dúfam, že to bolo dosť užitočné na to, aby sme lepšie pochopili a precvičili viac.

Odporúčané články

Toto je sprievodca triedou Abstract v PHP. Tu diskutujeme o tom, ako funguje Abstract Class v PHP s ukážkovým kódom a príslušnými výstupmi. Ďalšie informácie nájdete aj v nasledujúcich článkoch -

  1. Objekt v PHP
  2. PHP konštanty
  3. Cookie v PHP
  4. Vzory v PHP
  5. Factorial v PHP
  6. PHP Magic Constants
  7. Abstraktná trieda v C ++
  8. Rekurzívna funkcia PHP
  9. Rekurzívna funkcia v Pythone
  10. Rekurzívna funkcia v C
  11. Rekurzívna funkcia v JavaScripte

Kategórie: