⊗ppOpIfII 74 of 107 menu

Ereditarietà dalla classe e implementazione dell'interfaccia in OOP in PHP

Una classe può ereditare da un'altra classe e allo stesso tempo implementare un'interfaccia. Consideriamo un esempio pratico.

Supponiamo di voler creare una classe Programmer, che abbia un nome, uno stipendio e un elenco di linguaggi che il programmatore conosce. Per ora la descrizione della nostra classe è piuttosto vaga: sì, nella classe ci saranno nome, stipendio, linguaggi - ma quali metodi avrà la nostra classe?

Descriviamo la nostra classe in modo più preciso utilizzando l'interfaccia iProgrammer:

<?php interface iProgrammer { public function __construct($name, $salary); public function getName(); public function getSalary(); public function getLangs(); public function addLang($lang); } ?>

Supponiamo di aver setacciato le classi già implementate da noi e, a quanto pare, abbiamo già una classe simile Employee. Essa non implementa tutti i metodi della classe Programmer, ma solo una parte. Ecco il codice della classe già esistente in nostro possesso:

<?php class Employee { private $name; private $salary; public function __construct($name, $salary) { $this->name = $name; $this->salary = $salary; } public function getName() { return $this->name; } public function getSalary() { return $this->salary; } } ?>

È logico nel nostro caso fare in modo che la nostra nuova classe Programmer erediti parte dei metodi necessari dalla classe Employee (e la parte restante la implementeremo poi nella nuova classe stessa):

<?php class Programmer extends Employee { } ?>

Allo stesso tempo, sappiamo che la classe Pogrammer deve implementare l'interfaccia iProgrammer:

<?php class Programmer implements iProgrammer { } ?>

Uniamo l'ereditarietà dalla classe Employee e l'implementazione dell'interfaccia iProgrammer:

<?php class Programmer extends Employee implements iProgrammer { } ?>

Risulterà che la nostra classe Pogrammer erediterà dalla classe Employee i metodi __construct, getName e getSalary, while i metodi addLang e getLangs dovremo implementarli noi:

<?php class Programmer extends Employee implements iProgrammer { public function addLang($lang) { // implementazione } public function getLangs() { // implementazione } } ?>

All'interfaccia iProgrammer non importa, se i metodi sono nativi della classe o ereditati - l'importante è che tutti i metodi descritti siano implementati.

Copiate il codice della mia classe Employee e il codice dell'interfaccia iProgrammer. Non copiate la mia bozza della classe Programmer - senza sbirciare il mio codice, implementate questa classe autonomamente.

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