Co je abstraktní třída?

Stejně jako abstraktní třída existují i ​​abstraktní metody. Deklarujeme abstraktní metodu i abstraktní třídu abstraktním klíčovým slovem. V tomto tématu se budeme učit o abstraktní třídě v PHP.

Podle koncepce dědičnosti je nadřazená třída rozšířena o odvozenou třídu. Metody v nadřazené třídě jsou implementovány nebo definovány odvozenými třídami. PHP dělá způsob, jak být rodičovská třída specifičtější, využitím abstraktních metod třídy a abstraktní.

Abstraktní třída povinně obsahuje jednu metodu jako abstraktní. Také tato abstraktní třída může mít i jiné ne-abstraktní metody.

Syntax

Syntaxe abstraktní třídy s jednou metodou jako abstraktní.

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

Abstraktní metoda

abstract public function DemoAbstractMethod();

Jak funguje abstraktní třída v PHP?

V tomto článku se naučíme práci abstraktní třídy a vypadá to takto.

Nyní, když víme, že abstraktní třída povinně má jednu metodu jako abstraktní.

Mohou existovat také ne abstraktní metody. Abstraktní metoda má pouze deklaraci v základní třídě. To znamená, že má pouze jména a parametry bez dalšího kódu.

Pro další definování metody a pro práci s touto metodou je třeba tuto metodu implementovat do odvozené třídy, která rozšiřuje základní třídu. Nezapomeňte také, že tuto abstraktní třídu nelze vytvořit k vytvoření objektů, ale třídy odvozené od základní třídy lze vytvořit k vytvoření objektů.

Příklady abstraktní třídy v PHP

Níže uvádíme několik příkladů třídy Abstract v PHP

Příklad č. 1

Ve spodním programu se dozvíme, co se stane, když se vytvoří objekt abstraktní třídy.

Abstraktní třída Student je vytvořen obsahující jednu abstraktní metodu favouriteSubject () metody Student Class a dvě další ne abstraktní metody, jako setRollNo () a getRollNO (), které nastavují a získávají roli studenta, což se provádí vytvořením objektu odvozené třídy (rozšíření základní třídy).

<_?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ýstup :

Příklad č. 2

Tento příklad je vysvětlen krok za krokem níže, po výstupu programu spolu s kódem z tohoto pří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ýstup :

Abstraktní třída může být nazvána jako kostra pro odvozené třídy. V tomto výše uvedeném příkladu deklarujeme abstraktní třídu Student a vlastnost nazvanou $ m pro známky studenta.

Vysvětlení příkladu č. 2

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

Abstraktní třída může být nazvána jako kostra pro odvozené třídy. V tomto příkladu deklarujeme abstraktní třídu a metody spolu s dalšími metodami.

Ve výše uvedeném příkladu jsme deklarovali abstraktní třídu Studenti s abstraktními metodami pro výpočet procenta studenta, spolu se známkami.

Také jsme vytvořili metody (které nejsou abstraktní) pro stanovení známek studenta a získání oblíbeného předmětu studenta.

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

Abychom vytvořili objekty abstraktní třídy Student, musíme rozšířit třídu Student a z ní vytvořit odvozené třídy. Základní třída používá klíčové slovo rozšíření a umožňuje tak rozšíření základní třídy. Jakmile je třída rozšířena, můžeme nyní použít metody základní třídy.

Ve výše uvedeném příkladu je Ram odvozená třída, která rozšiřuje základní třídu Student. Používá klíčové slovo rozšíření. Nyní jsme vypočítali metodu procenta () pro výpočet procenta značek získaných Ramem.

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

Prohlašuji ještě jednu třídu, která rozšiřuje základní třídu Student, abychom se dozvěděli více.

Ve výše uvedeném příkladu jsme vytvořili Sherryho jako odvozenou třídu vytvořenou ze základní třídy Student. Používá klíčové slovo rozšíření. Má dvě funkce, jednu, která byla prohlášena za abstraktní, metodu calulatePercentage () v základní třídě a druhou je metoda FavoritesSubject (), která není 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';
)
)

Nyní vytvoříme objekt základní třídy a objekt odvozené třídy, který vyvolá chybu. Protože nemůžeme vytvořit instanci třídy prohlášené za abstraktní.

Lze tedy vytvořit pouze objekt odvozené třídy. Jakmile je to hotovo, pomocí tohoto objektu budeme volat abstraktní metodu a ne abstraktní metodu, jak je vidět níže.

$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ávěr

V tomto článku doufám, že jste se dozvěděli o tom, jak je abstraktní třída deklarována, jak funguje, jak je rozšířena pomocí klíčového slova rozšíření, jak je abstraktní metoda deklarována v základní třídě a jak je implementována do odvozené třídy. Vysvětlené příklady vám pomohou naučit se tento koncept snadno. Doufám, že byl připraven na to, aby byl natolik užitečný, aby lépe pochopil a procvičil.

Doporučené články

Toto je průvodce po třídě Abstract v PHP. Zde diskutujeme, jak abstraktní třída pracuje v PHP se ukázkovým kódem a vhodnými výstupy. Další informace naleznete také v následujících článcích -

  1. Objekt v PHP
  2. Konstanty PHP
  3. Soubor cookie v PHP
  4. Vzory v PHP
  5. Factorial v PHP
  6. PHP Magic Constants
  7. Abstraktní třída v C ++
  8. Rekurzivní funkce PHP
  9. Rekurzivní funkce v Pythonu
  10. Rekurzivní funkce v C
  11. Rekurzivní funkce v JavaScriptu

Kategorie: