Ce este o clasă abstractă?

Ca și clasa abstractă, există și metode abstracte. Declarăm atât metoda abstractă, cât și clasa abstractă cu cuvântul cheie abstract. În acest subiect, vom învăța despre clasa Abstract în PHP.

Conform conceptului de moștenire, clasa părinte este extinsă de clasa derivată. Metodele din clasa părinte sunt implementate sau definite de clasele derivate. PHP face o modalitate pentru clasa părinte să fie mai specifică, utilizând clasele abstracte și metodele abstracte.

Clasa abstractă conține în mod obligatoriu o metodă ca abstractă. De asemenea, această clasă abstractă poate avea și alte metode non-abstracte.

Sintaxă

Sintaxa clasei abstracte cu o metodă ca abstractă.

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

Metoda abstractă

abstract public function DemoAbstractMethod();

Cum funcționează Abstract Class în PHP?

În acest articol, vom învăța modul de lucru al clasei abstracte și merge așa.

Acum, după cum știm că o clasă abstractă are obligatoriu o singură metodă ca abstractă.

De asemenea, pot exista metode non-abstracte. Metoda abstractă are doar declarația din clasa de bază. În sensul că are doar nume și parametri fără alt cod.

Pentru a defini metoda în continuare și pentru a lucra cu metoda, această metodă trebuie implementată în clasa derivată care extinde clasa de bază. De asemenea, amintiți-vă că această clasă abstractă nu poate fi inițiată pentru a crea obiecte, dar clasa derivată din clasa de bază poate fi inițiată pentru a crea obiecte.

Exemple de clasă abstractă în PHP

Iată câteva exemple de clasă Abstract în PHP dată mai jos

Exemplul # 1

În programul de mai jos aflăm ce se întâmplă atunci când este creat un obiect al clasei abstracte.

Clasa abstractă Studentul este creat care conține o metodă abstractă a metodei favouriteSubject () a clasei Student și alte două metode nu abstracte precum setRollNo () și getRollNO () care stabilește și primește rolul elevului, care se realizează prin crearea obiectului clasei derivate. (extinderea clasei de bază).

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

Rezultat:

Exemplul # 2

Acest exemplu este explicat pas cu pas mai jos, după ieșirea programului împreună cu codul din acest exemplu.

Cod

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

Rezultat:

O clasă abstractă poate fi denumită schelet pentru clasele derivate. În acest exemplu de mai sus, declaram clasa abstractă Student și o proprietate numită $ m pentru notele studentului.

Explicarea exemplului # 2

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

O clasă abstractă poate fi denumită schelet pentru clasele derivate. În acest exemplu, declaram clasa și metodele abstracte împreună cu alte metode.

În exemplul de mai sus, am declarat studenți de clasă abstractă cu metode abstracte pentru a calcula procentul de student, împreună cu notele date.

De asemenea, am creat metode (care nu sunt abstracte) pentru a stabili Marcajele studentului și pentru a obține subiectul preferat al elevului.

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

Pentru a crea obiecte ale clasei abstracte Student trebuie să extindem clasa Student și să creăm clase derivate din ea. Clasa de bază folosește extensia cuvânt cheie pentru a permite extinderea clasei de bază. Odată ce clasa este extinsă, acum putem folosi metodele clasei de bază.

În exemplul de mai sus, Ram este clasa derivată care extinde clasa de bază Student. Utilizează cuvântul cheie extensie. Acum am calculat procentul () metoda pentru a calcula procentul notelor obținute de Ram.

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

Declarăm încă o clasă care extinde clasa de bază Student pentru a învăța mai multe.

În exemplul de mai sus, am creat Sherry ca clasa derivată creată din clasa de bază Student. Aceasta folosește cuvântul cheie extensie. Are două funcții, una care a fost declarată abstractă, metoda calulatePercentage () din clasa de bază, cealaltă este metoda favoriteSubject () care nu este abstractă.

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

Acum creăm obiectul clasei de bază și obiectul clasei derivate, care aruncă o eroare. Pentru că nu putem instaura clasa declarată abstractă.

Astfel, numai obiectul clasei derivate poate fi creat. După ce se va face acest lucru, folosind acest obiect, vom numi metoda abstractă și nu abstractă, așa cum se vede mai jos.

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

Concluzie

În acest articol, sper că ați aflat despre modul în care este declarată clasa abstractă, cum funcționează, cum este extinsă folosind cuvântul cheie extinde, cum este declarată metoda abstractă în clasa de bază și cum este implementată în clasa derivată. Exemplele explicate vă vor ajuta să învățați conceptul cu ușurință. Sper că a fost pregătit să fie suficient de util pentru a înțelege și a exersa mai mult.

Articole recomandate

Acesta este un ghid pentru clasa Abstract în PHP. Aici vom discuta despre cum funcționează clasa abstractă în PHP cu codul de eșantion și cu rezultatele corespunzătoare. De asemenea, puteți arunca o privire la următoarele articole pentru a afla mai multe -

  1. Obiect în PHP
  2. Constante PHP
  3. Cookie în PHP
  4. Modele în PHP
  5. Factorial în PHP
  6. PHP Constante magice
  7. Clasă abstractă în C ++
  8. Funcție recurentă PHP
  9. Funcția recurentă în Python
  10. Funcția recurentă în C
  11. Funcție recursivă în JavaScript