⊗ppOpFnMt 64 of 107 menu

Αφηρημένες Μέθοδοι στην ΑΝΠ στην PHP

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

Για να δηλώσετε μια μέθοδο ως αφηρημένη, κατά τη δήλωσή της πρέπει να γράψετε τη λέξη-κλειδί abstract.

Ας δοκιμάσουμε στην πράξη. Ας υποθέσουμε ότι όλοι οι απόγονοι της κλάσης User πρέπει να έχουν τη μέθοδο increaseRevenue.

Αυτή η μέθοδος πρέπει να παίρνει το τρέχον εισόδημα του χρήστη και να το αυξάνει κατά κάποια τιμή, που μεταβιβάζεται ως παράμετρος.

Η ίδια η κλάση User δεν γνωρίζει ποιο ακριβώς εισόδημα θα λαμβάνει ο κληρονόμος - γιατί στον εργαζόμενο είναι ο μισθός, ενώ στον φοιτητή - το επίδομα. Επομένως κάθε απόγονος θα υλοποιεί αυτή τη μέθοδο με τον δικό του τρόπο.

Η ουσία εδώ είναι ότι η αφηρημένη μέθοδος της κλάσης User αναγκάζει τον προγραμματιστή να υλοποιήσει αυτή τη μέθοδο στους απογόνους, αλλιώς η PHP θα εμφανίσει σφάλμα. Με αυτόν τον τρόπο εσείς, ή ένας άλλος προγραμματιστής, που εργάζεται με τον κώδικά σας, δεν θα μπορέσετε με κανέναν τρόπο να ξεχάσετε να υλοποιήσετε την απαραίτητη μέθοδο στον απόγονο.

Λοιπόν, ας δοκιμάσουμε στην πράξη. Ας προσθέσουμε την αφηρημένη μέθοδο increaseRevenue στην κλάση User:

<?php abstract class User { private $name; public function getName() { return $this->name; } public function setName($name) { $this->name = $name; } // Αφηρημένη μέθοδος χωρίς σώμα: abstract public function increaseRevenue($value); } ?>

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

Ας γράψουμε τώρα την υλοποίηση της μεθόδου increaseRevenue στην κλάση Employee:

<?php class Employee extends User { private $salary; public function getSalary() { return $this->salary; } public function setSalary($salary) { $this->salary = $salary; } // Ας γράψουμε την υλοποίηση της μεθόδου: public function increaseRevenue($value) { $this->salary = $this->salary + $value; } } ?>

Ας ελέγξουμε τη λειτουργία της κλάσης μας:

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

Ας υλοποιήσουμε τη μέθοδο increaseRevenue και στην κλάση Student. Μόνο που τώρα η μέθοδός μας θα αυξάνει το επίδομα:

<?php class Student extends User { private $scholarship; // επίδομα public function getScholarship() { return $this->scholarship; } public function setScholarship($scholarship) { $this->scholarship = $scholarship; } // Η μέθοδος αυξάνει το επίδομα: public function increaseRevenue($value) { $this->scholarship = $this->scholarship + $value; } } ?>

Προσθέστε στην κλάση σας User την ίδια αφηρημένη μέθοδο increaseRevenue. Γράψτε την υλοποίηση αυτής της μεθόδου στις κλάσεις Employee και Student.

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

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