⊗ppOpIfII 74 of 107 menu

Κληρονομία από κλάση και υλοποίηση διεπαφής στην αντικειμενοστρεφή προγραμματισμό στην PHP

Μια κλάση μπορεί να κληρονομήσει από μια άλλη κλάση και ταυτόχρονα να υλοποιεί κάποια διεπαφή. Ας το εξετάσουμε με ένα πρακτικό παράδειγμα.

Ας υποθέσουμε ότι θέλουμε να δημιουργήσουμε μια κλάση Programmer, η οποία θα έχει όνομα, μισθό και μια λίστα με γλώσσες που γνωρίζει ο προγραμματιστής. Προς το παρόν η περιγραφή της κλάσης μας είναι αρκετά αόριστη: ναι, στην κλάση θα υπάρχει όνομα, μισθός, γλώσσες - αλλά ποιες μέθοδοι θα έχει η κλάση μας;

Ας περιγράψουμε πιο ακριβώς την κλάση μας χρησιμοποιώντας τη διεπαφή iProgrammer:

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

Ας υποθέσουμε ότι ψάξαμε στις ήδη υλοποιημένες κλάσεις μας και, αποδεικνύεται, ότι έχουμε ήδη μια παρόμοια κλάση Employee. Δεν υλοποιεί όλες τις μεθόδους της κλάσης Programmer, αλλά μερικές. Αυτός είναι ο κώδικας της κλάσης που έχουμε ήδη:

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

Είναι λογικό στην περίπτωσή μας να κάνουμε έτσι ώστε η νέα μας κλάση Programmer να κληρονομήσει μέρος των απαραίτητων μεθόδων από την κλάση Employee (και το υπόλοιπο μέρος θα το υλοποιήσουμε αργότερα στην ίδια τη νέα κλάση):

<?php class Programmer extends Employee { } ?>

Ταυτόχρονα, γνωρίζουμε ότι η κλάση Pogrammer πρέπει να υλοποιεί τη διεπαφή iProgrammer:

<?php class Programmer implements iProgrammer { } ?>

Ας συνδυάσουμε την κληρονομιά από την κλάση Employee και την υλοποίηση της διεπαφής iProgrammer:

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

Θα προκύψει ότι η κλάση μας Pogrammer θα κληρονομήσει από την κλάση Employee τις μεθόδους __construct, getName και getSalary, ενώ τις μεθόδους addLang και getLangs θα πρέπει να υλοποιήσουμε εμείς:

<?php class Programmer extends Employee implements iProgrammer { public function addLang($lang) { // υλοποίηση } public function getLangs() { // υλοποίηση } } ?>

Στη διεπαφή iProgrammer δεν έχει σημασία αν οι μέθοδοι είναι εγγενείς στην κλάση ή κληρονομημένες - το κύριο πράγμα είναι ότι όλες οι περιγραφείσες μέθοδοι πρέπει να είναι υλοποιημένες.

Αντιγράψτε τον κώδικα της κλάσης μου Employee και τον κώδικα της διεπαφής iProgrammer. Μην αντιγράψετε το προσχέδιο μου για την κλάση Programmer - χωρίς να κοιτάτε τον κώδικά μου υλοποιήστε αυτήν την κλάση μόνοι σας.

Ελληνικά
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Χρησιμοποιούμε cookie για τη λειτουργία του ιστότοπου, την ανάλυση και την εξατομίκευση. Η επεξεργασία των δεδομένων γίνεται σύμφωνα με την Πολιτική Απορρήτου.
αποδοχή όλων ρύθμιση απόρριψη