Che cos'è una classe astratta?

Come la classe astratta, ci sono anche metodi astratti. Dichiariamo sia il metodo astratto che la classe astratta con la parola chiave astratta. In questo argomento, impareremo la lezione astratta in PHP.

Secondo il concetto di ereditarietà, la classe genitore viene estesa dalla classe derivata. I metodi nella classe genitore sono implementati o definiti dalle classi derivate. PHP consente alla classe genitore di essere più specifica, utilizzando la classe astratta e i metodi astratti.

La classe astratta contiene obbligatoriamente un metodo come astratto. Inoltre, questa classe astratta può avere anche altri metodi non astratti.

Sintassi

Sintassi della classe astratta con un metodo come astratto.

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

Metodo astratto

abstract public function DemoAbstractMethod();

Come funziona la classe astratta in PHP?

In questo articolo, impareremo il funzionamento della classe astratta e va così.

Ora, come sappiamo, una classe astratta ha obbligatoriamente un metodo come astratto.

Ci possono essere anche metodi non astratti. Il metodo astratto ha solo la dichiarazione nella classe base. Significa che ha solo nomi e parametri senza nessun altro codice.

Per definire ulteriormente il metodo e per lavorare con il metodo, questo metodo deve essere implementato nella classe derivata che estende la classe base. Inoltre, ricorda che questa classe astratta non può essere istanziata per creare oggetti, ma la classe derivata dalla classe base può essere istanziata per creare oggetti.

Esempi di classe astratta in PHP

Di seguito sono riportati alcuni esempi di classe astratta in PHP

Esempio 1

Nel programma seguente apprendiamo cosa succede quando viene creato un oggetto di classe astratta.

La classe astratta Student viene creata contenente un metodo astratto favouriteSubject () metodo della classe Student e altri due metodi non astratti come setRollNo () e getRollNO () che imposta e ottiene il ruolo dello studente, che viene creato creando l'oggetto della classe derivata (estensione della classe base).

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

Produzione :

Esempio n. 2

Questo esempio viene spiegato passo dopo passo, dopo l'output del programma insieme al codice di questo esempio.

Codice

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

Produzione :

Una classe astratta può essere definita come uno scheletro per le classi derivate. In questo esempio sopra, dichiariamo la classe astratta Student e una proprietà chiamata $ m per i voti dello studente.

Spiegazione dell'esempio n. 2

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

Una classe astratta può essere definita come uno scheletro per le classi derivate. In questo esempio, dichiariamo la classe e i metodi astratti insieme ad altri metodi.

Nell'esempio sopra, abbiamo dichiarato Studenti di classe astratti con metodi astratti per calcolare la percentuale dello studente, insieme ai voti assegnati.

Inoltre, abbiamo creato metodi (che non sono astratti) per impostare i voti dello studente e ottenere la materia preferita dello studente.

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

Per creare oggetti di classe astratta Studente dobbiamo estendere la classe Studente e creare classi derivate da esso. La classe base utilizza la parola chiave extends per consentire l'estensione della classe base. Una volta estesa la classe, ora possiamo usare i metodi della classe base.

Nell'esempio sopra, Ram è la classe derivata che estende la classe base Student. Utilizza la parola chiave extends. Ora abbiamo calcolato il metodo percentuale () per calcolare la percentuale dei voti ottenuti da Ram.

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

Dichiarare un'altra classe che estende la classe base Studente per noi per saperne di più.

Nell'esempio sopra, abbiamo creato Sherry come classe derivata creata dalla classe base Student. Questo utilizza la parola chiave extends. Ha due funzioni una che è stata dichiarata astratta, il metodo calulatePercentage () nella classe base, l'altro è il metodo favoriteSubject () che non è astratto.

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

Ora creiamo l'oggetto della classe base e l'oggetto della classe derivata, che genera un errore. Perché non possiamo istanziare la classe dichiarata astratta.

Pertanto è possibile creare solo l'oggetto della classe derivata. Una volta fatto questo, usando questo oggetto chiameremo il metodo astratto e non il metodo astratto entrambi come visto sotto.

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

Conclusione

In questo articolo, spero che tu abbia appreso come viene dichiarata la classe astratta, come funziona, come viene estesa usando la parola chiave extends, come viene dichiarato il metodo astratto nella classe base e come viene implementato nella classe derivata. Gli esempi spiegati ti aiuteranno ad apprendere il concetto a tuo agio. Spero che sia stato preparato per essere abbastanza utile da afferrare e praticare di più.

Articoli consigliati

Questa è una guida alla classe astratta in PHP. Qui discutiamo di come funziona la classe astratta in PHP con il codice di esempio e gli output appropriati. Puoi anche dare un'occhiata ai seguenti articoli per saperne di più -

  1. Oggetto in PHP
  2. Costanti PHP
  3. Cookie in PHP
  4. Pattern in PHP
  5. Fattoriale in PHP
  6. Costanti magiche di PHP
  7. Classe astratta in C ++
  8. Funzione ricorsiva PHP
  9. Funzione ricorsiva in Python
  10. Funzione ricorsiva in C
  11. Funzione ricorsiva in JavaScript

Categoria: