⊗ppOpIfII 74 of 107 menu

Arv från klass och implementering av gränssnitt i OOP i PHP

En klass kan ärva från en annan klass och samtidigt implementera ett gränssnitt. Låt oss titta på ett praktiskt exempel.

Låt oss säga att vi vill skapa en klass Programmer, som har ett namn, en lön och en lista över språk som programmeraren kan. Vår beskrivning av klassen är ganska vag för tillfället: ja, klassen kommer att ha namn, lön, språk - men vilka metoder kommer vår klass att ha?

Låt oss beskriva vår klass mer exakt med hjälp av gränssnittet iProgrammer:

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

Låt oss säga att vi grävt i våra redan implementerade klasser och det visar sig att vi redan har en liknande klass Employee. Den implementerar inte alla metoder från klassen Programmer, men en del. Här är koden för klassen som vi redan har:

<?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; } } ?>

Det är logiskt i vårt fall att göra så att vår nya klass Programmer ärver en del av de metoder den behöver från klassen Employee (och en del kommer vi sedan att implementera i den nya klassen själva):

<?php class Programmer extends Employee { } ?>

Samtidigt vet vi att klassen Pogrammer bör implementera gränssnittet iProgrammer:

<?php class Programmer implements iProgrammer { } ?>

Låt oss kombinera arv från klassen Employee och implementering av gränssnittet iProgrammer:

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

Resultatet blir att vår klass Pogrammer kommer att ärva från klassen Employee metoderna __construct, getName och getSalary, medan metoderna addLang och getLangs måste vi implementera själva:

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

Gränssnittet iProgrammer bryr sig inte om huruvida metoderna är egna i klassen eller ärvda - huvudsaken är att alla beskrivna metoder är implementerade.

Kopiera koden för min klass Employee och koden för gränssnittet iProgrammer. Kopiera inte min förberedelse för klassen Programmer - implementera denna klass själv utan att titta på min kod.

Svenska
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Vi använder kakor för webbplatsens funktion, analys och personalisering. Behandling av data sker i enlighet med Integritetspolicyn.
acceptera alla anpassa avvisa