⊗ppOpFnMt 64 of 107 menu

Metodi astratti nella OOP in PHP

Le classi astratte possono anche contenere metodi astratti. Tali metodi non devono avere implementazione, ma servono per indicare che tali metodi devono essere presenti nelle classi derivate. E la implementazione di tali metodi - è già compito delle classi derivate.

Per dichiarare un metodo come astratto, alla sua dichiarazione si deve scrivere la parola chiave abstract.

Proviamo nella pratica. Supponiamo che tutte le classi derivate della classe User debbano avere il metodo increaseRevenue.

Questo metodo deve prendere il reddito corrente dell'utente e aumentarlo di un certo valore, passato come parametro.

La classe User stessa non sa quale reddito avrà la classe derivata - dopotutto, per un dipendente è lo stipendio, mentre per uno studente - la borsa di studio. Quindi ogni classe derivata implementerà questo metodo a modo suo.

Il punto qui è che il metodo astratto della classe User obbliga il programmatore a implementare questo metodo nelle classi derivate, altrimenti PHP darà un errore. In questo modo voi, o un altro programmatore che lavora con il vostro codice, non potrete in alcun modo dimenticare di implementare il metodo richiesto nella classe derivata.

Quindi, proviamo nella pratica. Aggiungiamo il metodo astratto increaseRevenue alla classe User:

<?php abstract class User { private $name; public function getName() { return $this->name; } public function setName($name) { $this->name = $name; } // Metodo astratto senza corpo: abstract public function increaseRevenue($value); } ?>

Lasciamo che la nostra classe Employee rimanga per ora immutata. In questo caso, anche se non creiamo un oggetto della classe Employee, ma semplicemente eseguiamo il codice in cui sono definite le nostre classi, - PHP darà un errore.

Scriviamo ora l'implementazione del metodo increaseRevenue nella classe Employee:

<?php class Employee extends User { private $salary; public function getSalary() { return $this->salary; } public function setSalary($salary) { $this->salary = $salary; } // Scriviamo l'implementazione del metodo: public function increaseRevenue($value) { $this->salary = $this->salary + $value; } } ?>

Verifichiamo il funzionamento della nostra classe:

<?php $employee = new Employee; $employee->setName('john'); $employee->setSalary(1000); $employee->increaseRevenue(100); echo $employee->getSalary(); ?>

Implementiamo il metodo increaseRevenue anche nella classe Student. Solo che ora il nostro metodo aumenterà la borsa di studio:

<?php class Student extends User { private $scholarship; // borsa di studio public function getScholarship() { return $this->scholarship; } public function setScholarship($scholarship) { $this->scholarship = $scholarship; } // Il metodo aumenta la borsa di studio: public function increaseRevenue($value) { $this->scholarship = $this->scholarship + $value; } } ?>

Aggiungi alla tua classe User lo stesso metodo astratto increaseRevenue. Scrivi l'implementazione di questo metodo nelle classi Employee e Student.

Nella classe Figure crea metodi astratti per ottenere l'area e il perimetro della figura.

Italiano
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesia日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Utilizziamo i cookie per il funzionamento del sito, l'analisi e la personalizzazione. I dati vengono elaborati in conformità con la Politica sulla privacy.
accetta tutto personalizza rifiuta