Was ist eine abstrakte Klasse?

Wie abstrakte Klassen gibt es auch abstrakte Methoden. Wir deklarieren sowohl die abstrakte Methode als auch die abstrakte Klasse mit dem Schlüsselwort abstract. In diesem Thema lernen wir die Abstract-Klasse in PHP kennen.

Gemäß dem Konzept der Vererbung wird die übergeordnete Klasse um die abgeleitete Klasse erweitert. Die Methoden in der übergeordneten Klasse werden von den abgeleiteten Klassen implementiert oder definiert. Mit PHP kann die übergeordnete Klasse genauer definiert werden, indem abstrakte Klassen und abstrakte Methoden verwendet werden.

Die abstrakte Klasse enthält zwingend eine Methode als abstrakt. Diese abstrakte Klasse kann auch andere nicht abstrakte Methoden haben.

Syntax

Syntax der abstrakten Klasse mit einer Methode als abstrakt.

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

Abstrakte Methode

abstract public function DemoAbstractMethod();

Wie funktioniert Abstract Class in PHP?

In diesem Artikel lernen wir die Arbeitsweise der abstrakten Klasse und es geht so.

Jetzt, da wir wissen, dass eine abstrakte Klasse zwingend eine Methode als abstrakt hat.

Es kann auch nicht abstrakte Methoden geben. Die abstrakte Methode enthält nur die Deklaration in der Basisklasse. Das bedeutet, dass es nur Namen und Parameter ohne anderen Code enthält.

Um die Methode weiter zu definieren und mit der Methode zu arbeiten, muss diese Methode in der abgeleiteten Klasse implementiert werden, die die Basisklasse erweitert. Denken Sie auch daran, dass diese abstrakte Klasse nicht zum Erstellen von Objekten instanziiert werden kann, sondern dass die von der Basisklasse abgeleitete Klasse zum Erstellen von Objekten instanziiert werden kann.

Beispiele für Abstract Class in PHP

Nachfolgend finden Sie einige Beispiele für eine Abstract-Klasse in PHP

Beispiel 1

Im folgenden Programm erfahren wir, was passiert, wenn ein Objekt der abstrakten Klasse erstellt wird.

Abstrakte Klasse Student wird mit einer abstrakten Methode favouriteSubject () der Student-Klasse und zwei anderen nicht abstrakten Methoden wie setRollNo () und getRollNO () erstellt, mit denen die Rolle des Schülers festgelegt und abgerufen wird. Dies erfolgt durch Erstellen des Objekts der abgeleiteten Klasse (Erweiterung der Basisklasse).

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

Ausgabe :

Beispiel # 2

Dieses Beispiel wird nachfolgend nach der Programmausgabe zusammen mit dem Code aus diesem Beispiel Schritt für Schritt erläutert.

Code

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

Ausgabe :

Eine abstrakte Klasse kann als Grundgerüst für abgeleitete Klassen bezeichnet werden. In diesem obigen Beispiel deklarieren wir die abstrakte Klasse Student und eine Eigenschaft namens $ m für die Noten des Schülers.

Erläuterung von Beispiel # 2

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

Eine abstrakte Klasse kann als Grundgerüst für abgeleitete Klassen bezeichnet werden. In diesem Beispiel deklarieren wir die abstrakte Klasse und Methoden zusammen mit anderen Methoden.

Im obigen Beispiel haben wir die abstrakte Klasse Students mit abstrakten Methoden deklariert, um den Prozentsatz des Schülers zusammen mit den angegebenen Noten zu berechnen.

Außerdem haben wir Methoden entwickelt (die nicht abstrakt sind), um die Noten des Schülers zu setzen und das Lieblingsfach des Schülers zu erhalten.

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

Um Objekte der abstrakten Klasse Student zu erstellen, müssen wir die Klasse Student erweitern und daraus abgeleitete Klassen erstellen. Die Basisklasse verwendet das Schlüsselwort extend, damit die Basisklasse erweitert werden kann. Sobald die Klasse erweitert ist, können wir jetzt die Basisklassenmethoden verwenden.

Im obigen Beispiel ist Ram die abgeleitete Klasse, die die Basisklasse Student erweitert. Es wird das Schlüsselwort extend verwendet. Nun haben wir die percent () -Methode berechnet, um den Prozentsatz der von Ram erhaltenen Markierungen zu berechnen.

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

Deklaration einer weiteren Klasse, die die Basisklasse Student erweitert, damit wir mehr lernen können.

Im obigen Beispiel haben wir Sherry als abgeleitete Klasse erstellt, die von der Basisklasse Student erstellt wurde. Dies verwendet das Schlüsselwort extend. Es hat zwei Funktionen, eine, die als abstrakt deklariert wurde, die calulatePercentage () -Methode in der Basisklasse, die andere ist die favoriteSubject () -Methode, die nicht abstrakt ist.

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

Jetzt erstellen wir das Objekt der Basisklasse und das Objekt der abgeleiteten Klasse, was einen Fehler auslöst. Weil wir die als abstrakt deklarierte Klasse nicht instanziieren können.

Somit kann nur das Objekt der abgeleiteten Klasse erstellt werden. Sobald dies erledigt ist, rufen wir mit diesem Objekt die abstrakte Methode und nicht die abstrakte Methode auf, wie unten gezeigt.

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

Fazit

In diesem Artikel haben Sie hoffentlich erfahren, wie die abstrakte Klasse deklariert wird, wie sie funktioniert, wie sie mit dem Schlüsselwort extend erweitert wird, wie die abstrakte Methode in der Basisklasse deklariert wird und wie sie in der abgeleiteten Klasse implementiert wird. Die erläuterten Beispiele helfen Ihnen dabei, das Konzept zu erlernen. Hoffe, es war bereit, nützlich genug zu sein, um mehr zu begreifen und zu üben.

Empfohlene Artikel

Dies ist eine Anleitung zur Abstract-Klasse in PHP. Hier besprechen wir, wie Abstract Class in PHP mit dem Beispielcode und den entsprechenden Ausgaben funktioniert. Sie können sich auch die folgenden Artikel ansehen, um mehr zu erfahren -

  1. Objekt in PHP
  2. PHP-Konstanten
  3. Cookie in PHP
  4. Muster in PHP
  5. Faktoriell in PHP
  6. PHP Magic-Konstanten
  7. Abstrakte Klasse in C ++
  8. PHP rekursive Funktion
  9. Rekursive Funktion in Python
  10. Rekursive Funktion in C
  11. Rekursive Funktion in JavaScript