Что такое абстрактный класс?

Как и абстрактный класс, существуют также абстрактные методы. Мы объявляем как абстрактный метод, так и абстрактный класс с ключевым словом abstract. В этой теме мы собираемся узнать об абстрактном классе в PHP.

Согласно концепции наследования, родительский класс расширяется производным классом. Методы в родительском классе реализуются или определяются производными классами. PHP позволяет родительскому классу быть более конкретным, используя абстрактный класс и абстрактные методы.

Абстрактный класс обязательно содержит один метод как абстрактный. Кроме того, этот абстрактный класс может иметь и другие неабстрактные методы.

Синтаксис

Синтаксис абстрактного класса с одним методом как абстрактный.

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

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

abstract public function DemoAbstractMethod();

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

В этой статье мы изучим работу абстрактного класса, и все будет так.

Теперь, когда мы знаем, что абстрактный класс обязательно имеет один метод в качестве абстрактного.

Также могут быть неабстрактные методы. Абстрактный метод имеет только объявление в базовом классе. Это означает, что он имеет только имена и параметры без другого кода.

Для дальнейшего определения метода и работы с методом этот метод должен быть реализован в производном классе, который расширяет базовый класс. Кроме того, помните, что этот абстрактный класс не может быть создан для создания объектов, но класс, производный от базового класса, может быть создан для создания объектов.

Примеры абстрактного класса в PHP

Ниже приведены некоторые примеры абстрактного класса в PHP.

Пример № 1

В приведенной ниже программе мы узнаем, что происходит при создании объекта абстрактного класса.

Абстрактный класс Student создается с использованием одного абстрактного метода favouriteSubject () класса Student и двух других неабстрактных методов, таких как 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 и создать из него производные классы. Базовый класс использует ключевое слово extends для расширения базового класса. Как только класс расширен, мы можем теперь использовать методы базового класса.

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

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

Объявление еще одного класса, который расширяет базовый класс Студент для нас, чтобы узнать больше.

В приведенном выше примере мы создали Sherry как производный класс, созданный из базового класса Student. Это использует ключевое слово extends. Он имеет две функции, одна из которых была объявлена ​​как абстрактная, метод calulatePercentage () в базовом классе, а другая - метод favourSubject (), который не является абстрактным.

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, как объявляется абстрактный метод в базовом классе и как он реализован в производном классе. Приведенные примеры помогут вам освоить концепцию в непринужденной обстановке. Надеюсь, что он был подготовлен, чтобы быть достаточно полезным, чтобы понять и практиковать больше.

Рекомендуемые статьи

Это руководство к классу Abstract в PHP. Здесь мы обсудим, как абстрактный класс работает в PHP с примером кода и соответствующими результатами. Вы также можете взглянуть на следующие статьи, чтобы узнать больше -

  1. Объект в PHP
  2. Константы PHP
  3. Cookie в PHP
  4. Шаблоны в PHP
  5. Факториал в PHP
  6. Магические константы PHP
  7. Абстрактный класс в C ++
  8. PHP рекурсивная функция
  9. Рекурсивная функция в Python
  10. Рекурсивная функция в C
  11. Рекурсивная функция в JavaScript