Що таке абстрактний клас?

Як і абстрактний клас, є і абстрактні методи. Ми оголошуємо і абстрактний метод, і абстрактний клас з абстрактним ключовим словом. У цій темі ми дізнаємось про клас Анотація на PHP.

Відповідно до концепції успадкування, батьківський клас поширюється на похідний клас. Методи в батьківському класі реалізовані або визначені похідними класами. PHP дозволяє батьківському класу бути більш конкретним, використовуючи абстрактний клас та абстрактні методи.

Абстрактний клас в обов’язковому порядку містить один метод як абстрактний. Також у цього абстрактного класу можуть бути й інші не абстрактні методи.

Синтаксис

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

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

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

abstract public function DemoAbstractMethod();

Як працює абстрактний клас у PHP?

У цій статті ми дізнаємось, як працює абстрактний клас, і він іде так.

Тепер, як ми знаємо, що абстрактний клас в обов’язковому порядку має один метод як абстрактний.

Можуть бути і не абстрактні методи. Абстрактний метод має лише оголошення в базовому класі. Це означає, що в ньому є лише імена та параметри без іншого коду.

Для подальшого визначення методу та роботи з методом цей метод потрібно реалізувати у похідному класі, який розширює базовий клас. Також пам’ятайте, що цей абстрактний клас не може бути створений для створення об'єктів, але клас, похідний від базового класу, може бути створений для створення об'єктів.

Приклади абстрактного класу з PHP

Ось кілька прикладів класу Анотація в PHP, наведених нижче

Приклад №1

У програмі нижче ми дізнаємося, що відбувається, коли створюється об’єкт абстрактного класу.

Абстрактний клас Student створений, що містить один абстрактний метод 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 і створити з нього похідні класи. Базовий клас використовує ключове слово extens, щоб дозволити розширення базового класу. Після розширення класу ми тепер можемо використовувати методи базового класу.

У наведеному вище прикладі Ram є похідним класом, який розширює базовий клас Student. Він використовує ключове слово extens. Тепер ми обчислили метод процента () для обчислення відсотка балів, отриманих Рамом.

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

Оголошення ще одного класу, який розширює базовий клас Student для нас, щоб дізнатися більше.

У наведеному вище прикладі ми створили Шеррі як похідний клас, створений з базового класу Student. Для цього використовується ключове слово extens. Він має дві функції, одна з яких була оголошена абстрактною, метод 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. Cookie в PHP
  4. Шаблони в PHP
  5. Факторний в PHP
  6. PHP магічні константи
  7. Анотація класу на C ++
  8. Рекурсивна функція PHP
  9. Рекурсивна функція в Python
  10. Рекурсивна функція в С
  11. Рекурсивна функція в JavaScript