⊗ppOpIfInr 65 of 107 menu

Διεπαφές στην Αντικειμενοστρεφή Προγραμματισμό σε PHP

Όπως ήδη γνωρίζετε, οι αφηρημένες κλάσεις αντιπροσωπεύουν ένα σύνολο μεθόδων για τους απογόνους τους. Μέρος αυτών των μεθόδων μπορεί να υλοποιηθεί στην ίδια την κλάση, και μέρος των μεθόδων μπορεί να δηλωθεί αφηρημένο και να απαιτεί υλοποίηση στις παιδικές κλάσεις.

Ας φανταστούμε μια κατάσταση όπου η αφηρημένη σας κλάση αντιπροσωπεύει μόνο ένα σύνολο αφηρημένων δημόσιων μεθόδων, χωρίς να προσθέτει μεθόδους με υλοποίηση.

Πρακτικά, η γονική σας κλάση περιγράφει διεπαφή των απογόνων, δηλαδή το σύνολο των δημόσιων μεθόδων τους, υποχρεωτικών για υλοποίηση.

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

Πότε βοηθάει αυτό: ας δημιουργήσουμε τη δική μας γονική κλάση και αρκετούς απογόνους σε αυτήν. Αν αργότερα, για παράδειγμα, σε έναν μήνα, αποφασίσουμε να δημιουργήσουμε έναν ακόμη απόγονο, μάλλον θα έχουμε ξεχάσει τις λεπτομέρειες του κώδικά μας και μπορεί εύκολα να ξεχάσουμε να γράψουμε την υλοποίηση κάποιας μεθόδου στον νέο απόγονο. Ωστόσο, ο ίδιος ο PHP δεν θα επιτρέψει να χαθεί η μέθοδος - και απλά θα εμφανίσει ένα σφάλμα.

Το ίδιο ισχύει και για έναν άλλο προγραμματιστή, που δουλεύει πάνω στο project σας. Ας πούμε ότι ο κώδικας της γονικής κλάσης τον γράψατε εσείς, και στη συνέχεια ένας συνάδελφός σας αποφάσισε να δημιουργήσει έναν ακόμη απόγονο. Ο συνάδελφός σας επίσης δεν θα μπορέσει να χάσει μερικές μεθόδους.

Υπάρχει, ωστόσο, ένα πρόβλημα: πρακτικά, φτιάξαμε τη γονική μας κλάση για να γράφουμε σε αυτήν αφηρημένες δημόσιες μεθόδους, αλλά εμείς οι ίδιοι ή ο συνάδελφός μας έχουμε τη δυνατότητα να προσθέσουμε κατά λάθος σε αυτήν την κλάση μια μη δημόσια μέθοδο ή μια μη αφηρημένη.

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

Οι διεπαφές αντιπροσωπεύουν κλάσεις, των οποίων όλες οι μέθοδοι είναι δημόσιες και δεν έχουν υλοποίηση. Ο κώδικας των μεθόδων πρέπει να υλοποιηθεί από τις κλάσεις-απόγονοι των διεπαφών.

Οι διεπαφές δηλώνονται με τον ίδιο τρόπο όπως οι συνηθισμένες κλάσεις, αλλά χρησιμοποιώντας τη λέξη-κλειδί interface αντί για τη λέξη class.

Για την κληρονομικότητα από διεπαφές χρησιμοποιείται μια ελαφρώς διαφορετική ορολογία: λέγεται ότι οι κλάσεις δεν κληρονομούν από τις διεπαφές, αλλά υλοποιούν αυτές. Αντίστοιχα, αντί για τη λέξη extends πρέπει να χρησιμοποιηθεί η λέξη-κλειδί implements.

Δεν μπορεί να δημιουργηθεί αντικείμενο μιας διεπαφής. Όλες οι μέθοδοι μιας διεπαφής πρέπει να δηλωθούν ως public και δεν πρέπει να έχουν υλοποίηση. Μια διεπαφή μπορεί να έχει μόνο μεθόδους, όχι ιδιότητες. Επίσης, δεν μπορεί να γίνει διεπαφή και κλάση με το ίδιο όνομα.

Ελληνικά
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 για τη λειτουργία του ιστότοπου, την ανάλυση και την εξατομίκευση. Η επεξεργασία των δεδομένων γίνεται σύμφωνα με την Πολιτική Απορρήτου.
αποδοχή όλων ρύθμιση απόρριψη