Какво е абстрактен клас?

Подобно на абстрактния клас, има и абстрактни методи. Ние декларираме както абстрактния метод, така и абстрактния клас с абстрактната ключова дума. В тази тема ще научим за абстрактен клас в PHP.

Съгласно концепцията за наследяване, родителският клас се разширява от производния клас. Методите в родителския клас се реализират или дефинират от производни класове. PHP прави начин родителският клас да бъде по-специфичен, като използва абстрактен клас и абстрактни методи.

Абстрактният клас задължително съдържа един метод като абстракт. Също така, този абстрактен клас може да има и други нео-абстрактни методи.

Синтаксис

Синтаксис на абстрактния клас с един метод като абстракт.

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

Абстрактен метод

abstract public function DemoAbstractMethod();

Как работи абстрактният клас в PHP?

В тази статия ще научим работата на абстрактния клас и става така.

Както знаем, че абстрактният клас задължително има един метод като абстракт.

Могат да съществуват и нео-абстрактни методи. Абстрактният метод има само декларацията в базовия клас. Това означава, че той има само имена и параметри без друг код.

За да се дефинира допълнително методът и да се работи с метода, този метод трябва да бъде приложен в производен клас, който разширява базовия клас. Също така не забравяйте, че този абстрактен клас не може да бъде инстанциран за създаване на обекти, но класът, извлечен от базовия клас, може да бъде инстанциран за създаване на обекти.

Примери за абстрактен клас в PHP

Ето няколко примера за абстрактен клас в PHP, даден по-долу

Пример №1

В програмата по-долу научаваме какво се случва, когато се създаде обект от абстрактен клас.

Абстрактен клас Студент е създаден, съдържащ един абстрактен метод favouriteSubject () метод на Студентския клас и два други не абстрактни метода като setRollNo () и getRollNO (), който определя и получава ролята на ученика, което се прави чрез създаване на обекта на извлечения клас (разширяване на базовия клас).

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

Резултат:

Пример №2

Този пример е обяснен стъпка по стъпка по-долу, след извеждане на програмата заедно с кода от този пример.

код

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

Резултат:

Абстрактният клас може да бъде наречен скелет за производни класове. В горния пример декларираме абстрактния клас Student и свойство, наречено $ m за оценки на ученика.

Обяснение на пример №2

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

Абстрактният клас може да бъде наречен скелет за производни класове. В този пример декларираме абстрактния клас и методи заедно с други методи.

В горния пример сме декларирали абстрактен клас Студенти с абстрактни методи за изчисляване на процента на ученика, заедно с дадените оценки.

Също така, ние създадохме методи (които не са абстрактни), за да зададем маркировките на ученика и да получим любимия предмет на ученика.

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

За да създадем обекти от абстрактен клас Student, ние трябва да разширим класа Student и да създадем производни класове от него. Базовият клас използва удължаваща ключова дума, за да позволи на базовия клас да се разшири. След като класът се разшири, вече можем да използваме методите на базовия клас.

В горния пример Ram е производният клас, който разширява базовия клас Student. Той използва ключовата дума extends. Сега сме изчислили процента () метод за изчисляване на процента от марки, получени от Ram.

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

Деклариране на още един клас, който разширява базовия клас Student за нас, за да научим повече.

В горния пример сме създали Sherry като производен клас, създаден от базовия клас Student. Това използва ключовата дума extends. Той има две функции, една от които е декларирана като абстрактна, методът calulatePercentage () в базовия клас, а другият е методът favoriteSubject (), който не е абстрактна.

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

заключение

В тази статия се надявам, че сте научили за това как е деклариран абстрактният клас, как работи, как се разширява с помощта на ключова дума extends, как абстрактният метод се декларира в базовия клас и как се реализира в извлечения клас. Обяснените примери ще ви помогнат да научите концепцията лесно. Надявам се, че е подготвен да бъде достатъчно полезен, за да схване и практикува повече.

Препоръчителни статии

Това е ръководство за класа „Абстракт“ в PHP. Тук обсъждаме как работи абстрактният клас в PHP с примерния код и подходящите изходи. Може да разгледате и следните статии, за да научите повече -

  1. Обект в PHP
  2. PHP константи
  3. Бисквитка в PHP
  4. Модели в PHP
  5. Фактор на PHP
  6. PHP магически константи
  7. Абстрактен клас по C ++
  8. PHP рекурсивна функция
  9. Рекурсивна функция в Python
  10. Рекурсивна функция в С
  11. Рекурсивна функция в JavaScript